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));
        }
示例#2
0
        public override ILexer <StatusLine> Create()
        {
            var sp         = SpaceLexerFactory.Create();
            var innerLexer = Concatenation.Create(
                HttpVersionLexerFactory.Create(),
                sp,
                StatusCodeLexerFactory.Create(),
                sp,
                ReasonPhraseLexerFactory.Create(),
                NewLineLexerFactory.Create());

            return(new StatusLineLexer(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));
        }
示例#4
0
 public void ReadSuccess(string input)
 {
     var factory = new SpaceLexerFactory(new TerminalLexerFactory());
     var spaceLexer = factory.Create();
     using (var scanner = new TextScanner(new StringTextSource(input)))
     {
         var result = spaceLexer.Read(scanner);
         Assert.NotNull(result);
         Assert.True(result.Success);
         Assert.NotNull(result.Element);
         Assert.Equal(input, result.Element.Text);
     }
 }