示例#1
0
        public override ILexer <RequiredWhiteSpace> Create()
        {
            var innerLexer = Repetition.Create(
                Alternation.Create(SpaceFactory.Create(), HorizontalTabLexerFactory.Create()),
                1,
                int.MaxValue);

            return(new RequiredWhiteSpaceLexer(innerLexer));
        }
        public override ILexer <ObsoleteFold> Create()
        {
            var innerLexer = Concatenation.Create(
                NewLineLexerFactory.Create(),
                Repetition.Create(
                    Alternation.Create(SpaceLexerFactory.Create(), HorizontalTabLexerFactory.Create()),
                    1,
                    int.MaxValue));

            return(new ObsoleteFoldLexer(innerLexer));
        }
        public override ILexer <CommentText> Create()
        {
            var innerLexer = Alternation.Create(
                HorizontalTabLexerFactory.Create(),
                SpaceLexerFactory.Create(),
                ValueRange.Create(0x21, 0x27, Encoding.UTF8),
                ValueRange.Create(0x2A, 0x5B, Encoding.UTF8),
                ValueRange.Create(0x5D, 0x7E, Encoding.UTF8),
                ObsoleteTextLexerFactory.Create());

            return(new CommentTextLexer(innerLexer));
        }
        public override ILexer <QuotedPair> Create()
        {
            var htab       = HorizontalTabLexerFactory.Create();
            var sp         = SpaceLexerFactory.Create();
            var vchar      = VisibleCharacterLexerFactory.Create();
            var obsText    = ObsoleteTextLexerFactory.Create();
            var innerLexer = Concatenation.Create(
                Terminal.Create(@"\", StringComparer.Ordinal),
                Alternation.Create(htab, sp, vchar, obsText));

            return(new QuotedPairLexer(innerLexer));
        }
        public override ILexer <QuotedText> Create()
        {
            var innerLexer = Alternation.Create(
                HorizontalTabLexerFactory.Create(),
                SpaceLexerFactory.Create(),
                Terminal.Create(@"!", StringComparer.Ordinal),
                ValueRange.Create(0x23, 0x5B, Encoding.UTF8),
                ValueRange.Create(0x5D, 0x7E, Encoding.UTF8),
                ObsoleteTextLexerFactory.Create());

            return(new QuotedTextLexer(innerLexer));
        }
        public override ILexer <ReasonPhrase> Create()
        {
            var innerLexer = Repetition.Create(
                Alternation.Create(
                    HorizontalTabLexerFactory.Create(),
                    SpaceLexerFactory.Create(),
                    VisibleCharacterLexerFactory.Create(),
                    ObsoleteTextLexerFactory.Create()),
                0,
                int.MaxValue);

            return(new ReasonPhraseLexer(innerLexer));
        }
示例#7
0
 public void ReadSuccess(string input)
 {
     var factory = new HorizontalTabLexerFactory(new TerminalLexerFactory());
     var lexer = factory.Create();
     using (var scanner = new TextScanner(new StringTextSource(input)))
     {
         var result = lexer.Read(scanner);
         Assert.NotNull(result);
         Assert.True(result.Success);
         Assert.NotNull(result.Element);
         Assert.Equal(input, result.Element.Text);
     }
 }
示例#8
0
        public void ReadSuccess(string input)
        {
            // General
            var terminalLexerFactory = new TerminalLexerFactory();
            var alternativeLexerFactory = new AlternativeLexerFactory();
            var sequenceLexerFactory = new ConcatenationLexerFactory();
            var repetitionLexerFactory = new RepetitionLexerFactory();

            // SP
            var spaceLexerFactory = new SpaceLexerFactory(terminalLexerFactory);

            // HTAB
            var horizontalTabLexerFactory = new HorizontalTabLexerFactory(terminalLexerFactory);

            // WSP
            var whiteSpaceLexerFactory = new WhiteSpaceLexerFactory(
                spaceLexerFactory,
                horizontalTabLexerFactory,
                alternativeLexerFactory);

            // CR
            var carriageReturnLexerFactory = new CarriageReturnLexerFactory(terminalLexerFactory);

            // LF
            var lineFeedLexerFactory = new LineFeedLexerFactory(terminalLexerFactory);

            // CRLF
            var endOfLineLexerFactory = new EndOfLineLexerFactory(
                carriageReturnLexerFactory,
                lineFeedLexerFactory,
                sequenceLexerFactory);

            // LWSP
            var linearWhiteSpaceLexerFactory = new LinearWhiteSpaceLexerFactory(
                whiteSpaceLexerFactory,
                endOfLineLexerFactory,
                sequenceLexerFactory,
                alternativeLexerFactory,
                repetitionLexerFactory);
            var linearWhiteSpaceLexer = linearWhiteSpaceLexerFactory.Create();
            using (var scanner = new TextScanner(new StringTextSource(input)))
            {
                var result = linearWhiteSpaceLexer.Read(scanner);
                Assert.NotNull(result);
                Assert.True(result.Success);
                Assert.NotNull(result.Element);
                Assert.Equal(input, result.Element.Text);
            }
        }
示例#9
0
        public override ILexer <FieldContent> Create()
        {
            var fieldVChar = FieldVisibleCharacterLexerFactory.Create();
            var innerLexer = Concatenation.Create(
                fieldVChar,
                Option.Create(
                    Concatenation.Create(
                        Repetition.Create(
                            Alternation.Create(
                                SpaceLexerFactory.Create(),
                                HorizontalTabLexerFactory.Create()),
                            1,
                            int.MaxValue),
                        fieldVChar)));

            return(new FieldContentLexer(innerLexer));
        }
示例#10
0
 public void ReadSuccess(string input)
 {
     var terminalLexerFactory = new TerminalLexerFactory();
     var spaceLexerFactory = new SpaceLexerFactory(terminalLexerFactory);
     var horizontalTabLexerFactory = new HorizontalTabLexerFactory(terminalLexerFactory);
     var alternativeLexerFactory = new AlternativeLexerFactory();
     var whiteSpaceLexerFactory = new WhiteSpaceLexerFactory(spaceLexerFactory, horizontalTabLexerFactory, alternativeLexerFactory);
     var whiteSpaceLexer = whiteSpaceLexerFactory.Create();
     using (var scanner = new TextScanner(new StringTextSource(input)))
     {
         var result = whiteSpaceLexer.Read(scanner);
         Assert.NotNull(result);
         Assert.True(result.Success);
         Assert.NotNull(result.Element);
         Assert.Equal(input, result.Element.Text);
     }
 }