Beispiel #1
0
        public void Initialize()
        {
            var cr = Grammar.Rule("CR");
            var lf = Grammar.Rule("LF");

            InnerLexer = Concatenation.Create(cr, lf);
        }
Beispiel #2
0
        public override ILexer <IPvFuture> Create()
        {
            // "v"
            var v = Terminal.Create(@"v", StringComparer.OrdinalIgnoreCase);

            // "."
            var dot = Terminal.Create(@".", StringComparer.Ordinal);

            // ":"
            var colon = Terminal.Create(@":", StringComparer.Ordinal);

            // 1*HEXDIG
            var hexadecimalDigitLexer = HexadecimalDigitLexerFactory.Create();
            var r = Repetition.Create(hexadecimalDigitLexer, 1, int.MaxValue);

            // unreserved / sub-delims / ":"
            var unreservedLexer             = UnreservedLexerFactory.Create();
            var subcomponentsDelimiterLexer = SubcomponentsDelimiterLexerFactory.Create();
            var a = Alternation.Create(unreservedLexer, subcomponentsDelimiterLexer, colon);

            // 1*( unreserved / sub-delims / ":" )
            var s = Repetition.Create(a, 1, int.MaxValue);

            // "v" 1*HEXDIG "." 1*( unreserved / sub-delims / ":" )
            var innerLexer = Concatenation.Create(v, r, dot, s);

            // IPvFuture
            return(new IPvFutureLexer(innerLexer));
        }
Beispiel #3
0
        public void Initialize()
        {
            var wsp  = Grammar.Rule("WSP");
            var crlf = Grammar.Rule("CRLF");

            InnerLexer = Repetition.Create(Alternation.Create(wsp, Concatenation.Create(crlf, wsp)), 0, int.MaxValue);
        }
        public override ILexer <IPLiteral> Create()
        {
            var a          = Terminal.Create(@"[", StringComparer.Ordinal);
            var b          = Terminal.Create(@"]", StringComparer.Ordinal);
            var alt        = Alternation.Create(IPv6AddressLexerFactory.Create(), IPvFutureLexerFactory.Create());
            var innerLexer = Concatenation.Create(a, alt, b);

            return(new IPLiteralLexer(innerLexer));
        }
        public override ILexer <ChunkedBody> Create()
        {
            var innerLexer = Concatenation.Create(
                Repetition.Create(ChunkLexerFactory.Create(), 0, int.MaxValue),
                LastChunkLexerFactory.Create(),
                TrailerPartLexerFactory.Create(),
                NewLineLexerFactory.Create());

            return(new ChunkedBodyLexer(innerLexer));
        }
Beispiel #6
0
        public override ILexer <TrailerPart> Create()
        {
            var innerLexer =
                Repetition.Create(
                    Concatenation.Create(HeaderFieldLexerFactory.Create(), NewLineLexerFactory.Create()),
                    0,
                    int.MaxValue);

            return(new TrailerPartLexer(innerLexer));
        }
Beispiel #7
0
        public override ILexer <TransferCodingCollection> Create()
        {
            var innerLexer = Alternation.Create(
                Terminal.Create(@"trailers", StringComparer.OrdinalIgnoreCase),
                Concatenation.Create(
                    TransferCodingLexerFactory.Create(),
                    Option.Create(TransferCodingRankLexerFactory.Create())));

            return(new TransferCodingCollectionLexer(innerLexer));
        }
        public override ILexer <PercentEncoding> Create()
        {
            var hexDigitLexer = HexadecimalDigitLexerFactory.Create();
            var percentEncodingAlternationLexer = Concatenation.Create(
                Terminal.Create(@"%", StringComparer.Ordinal),
                hexDigitLexer,
                hexDigitLexer);

            return(new PercentEncodingLexer(percentEncodingAlternationLexer));
        }
        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));
        }
Beispiel #10
0
        public override ILexer <ReceivedProtocol> Create()
        {
            var innerLexer = Concatenation.Create(
                Option.Create(
                    Concatenation.Create(
                        ProtocolNameLexerFactory.Create(),
                        Terminal.Create(@"/", StringComparer.Ordinal))),
                ProtocolVersionLexerFactory.Create());

            return(new ReceivedProtocolLexer(innerLexer));
        }
        public override ILexer <Host> Create()
        {
            var innerLexer = Concatenation.Create(
                UriHostLexerFactory.Create(),
                Option.Create(
                    Concatenation.Create(
                        Terminal.Create(@":", StringComparer.Ordinal),
                        PortLexerFactory.Create())));

            return(new HostLexer(innerLexer));
        }
        public override ILexer <PartialUri> Create()
        {
            var innerLexer = Concatenation.Create(
                RelativePartLexerFactory.Create(),
                OptionalDelimitedListLexerFactory.Create(
                    Concatenation.Create(
                        Terminal.Create(@"?", StringComparer.Ordinal),
                        QueryLexerFactory.Create())));

            return(new PartialUriLexer(innerLexer));
        }
        public override ILexer <OriginForm> Create()
        {
            var innerLexer = Concatenation.Create(
                AbsolutePathLexerFactory.Create(),
                Option.Create(
                    Concatenation.Create(
                        Terminal.Create(@"?", StringComparer.Ordinal),
                        QueryLexerFactory.Create())));

            return(new OriginFormLexer(innerLexer));
        }
        public override ILexer <HeaderField> Create()
        {
            var ows        = OptionalWhiteSpaceLexerFactory.Create();
            var innerLexer = Concatenation.Create(
                FieldNameLexerFactory.Create(),
                Terminal.Create(@":", StringComparer.Ordinal),
                ows,
                FieldValueLexerFactory.Create(),
                ows);

            return(new HeaderFieldLexer(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));
        }
Beispiel #16
0
        public override ILexer <Authority> Create()
        {
            var at          = Terminal.Create(@"@", StringComparer.Ordinal);
            var userinfoseq = Concatenation.Create(UserInformationLexerFactory.Create(), at);
            var optuserinfo = Option.Create(userinfoseq);
            var colon       = Terminal.Create(@":", StringComparer.Ordinal);
            var portseq     = Concatenation.Create(colon, PortLexerFactory.Create());
            var optport     = Option.Create(portseq);
            var innerLexer  = Concatenation.Create(optuserinfo, HostLexerFactory.Create(), optport);

            return(new AuthorityLexer(innerLexer));
        }
Beispiel #17
0
        public override ILexer <HttpVersion> Create()
        {
            var digit      = DigitLexerFactory.Create();
            var innerLexer = Concatenation.Create(
                HttpNameLexerFactory.Create(),
                Terminal.Create(@"/", StringComparer.Ordinal),
                digit,
                Terminal.Create(@".", StringComparer.Ordinal),
                digit);

            return(new HttpVersionLexer(innerLexer));
        }
        public override ILexer <TransferCodingRank> Create()
        {
            var ows        = OptionalWhiteSpaceLexerFactory.Create();
            var innerLexer = Concatenation.Create(
                ows,
                Terminal.Create(@";", StringComparer.Ordinal),
                ows,
                Terminal.Create(@"q=", StringComparer.OrdinalIgnoreCase),
                RankLexerFactory.Create());

            return(new TransferCodingRankLexer(innerLexer));
        }
Beispiel #19
0
        public override ILexer <LastChunk> Create()
        {
            var innerLexer = Concatenation.Create(
                Repetition.Create(
                    Terminal.Create(@"0", StringComparer.Ordinal),
                    1,
                    int.MaxValue),
                Option.Create(ChunkExtensionLexerFactory.Create()),
                NewLineLexerFactory.Create());

            return(new LastChunkLexer(innerLexer));
        }
Beispiel #20
0
        public override ILexer <AbsolutePath> Create()
        {
            var innerLexer =
                Repetition.Create(
                    Concatenation.Create(
                        Terminal.Create(@"/", StringComparer.Ordinal),
                        Segment.Create()),
                    1,
                    int.MaxValue);

            return(new AbsolutePathLexer(innerLexer));
        }
Beispiel #21
0
        public override ILexer <RequestLine> Create()
        {
            var sp         = SpaceLexerFactory.Create();
            var innerLexer = Concatenation.Create(
                MethodLexerFactory.Create(),
                sp,
                RequestTargetLexerFactory.Create(),
                sp,
                HttpVersionLexerFactory.Create(),
                NewLineLexerFactory.Create());

            return(new RequestLineLexer(innerLexer));
        }
        public override ILexer <QuotedString> Create()
        {
            var dquote     = DoubleQuoteLexerFactory.Create();
            var innerLexer = Concatenation.Create(
                dquote,
                Repetition.Create(
                    Alternation.Create(QuotedTextLexerFactory.Create(), QuotedPairLexerFactory.Create()),
                    0,
                    int.MaxValue),
                dquote);

            return(new QuotedStringLexer(innerLexer));
        }
        public override ILexer <ReceivedBy> Create()
        {
            var innerLexer = Alternation.Create(
                Concatenation.Create(
                    UriHostLexerFactory.Create(),
                    Option.Create(
                        Concatenation.Create(
                            Terminal.Create(@":", StringComparer.Ordinal),
                            PortLexerFactory.Create()))),
                PseudonymLexerFactory.Create());

            return(new ReceivedByLexer(innerLexer));
        }
Beispiel #24
0
        public override ILexer <PathRootless> Create()
        {
            var innerLexer = Concatenation.Create(
                SegmentNonZeroLengthLexerFactory.Create(),
                Repetition.Create(
                    Concatenation.Create(
                        Terminal.Create(@"/", StringComparer.Ordinal),
                        SegmentLexerFactory.Create()),
                    0,
                    int.MaxValue));

            return(new PathRootlessLexer(innerLexer));
        }
Beispiel #25
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 <TransferParameter> Create()
        {
            var bws        = BadWhiteSpaceLexerFactory.Create();
            var token      = TokenLexerFactory.Create();
            var innerLexer = Concatenation.Create(
                token,
                bws,
                Terminal.Create(@"=", StringComparer.Ordinal),
                bws,
                Alternation.Create(token, QuotedStringLexerFactory.Create()));

            return(new TransferParameterLexer(innerLexer));
        }
Beispiel #27
0
        public void Initialize()
        {
            var number     = Grammar.Rule("number");
            var expression = Grammar.Rule("expression");

            InnerLexer = Concatenation.Create(
                Option.Create(Terminal.Create("-", StringComparer.Ordinal)),
                Alternation.Create(
                    number,
                    Concatenation.Create(
                        Terminal.Create("(", StringComparer.Ordinal),
                        expression,
                        Terminal.Create(")", StringComparer.Ordinal))));
        }
        public override ILexer <PathAbsoluteOrEmpty> Create()
        {
            // "/"
            var a = Terminal.Create(@"/", StringComparer.Ordinal);

            // "/" segment
            var c = Concatenation.Create(a, SegmentLexerFactory.Create());

            // *( "/" segment )
            var innerLexer = Repetition.Create(c, 0, int.MaxValue);

            // path-abempty
            return(new PathAbsoluteOrEmptyLexer(innerLexer));
        }
Beispiel #29
0
        public override ILexer <IPv4Address> Create()
        {
            // dec-octet
            var a = DecimaOctetLexerFactory.Create();

            // "."
            var b = Terminal.Create(@".", StringComparer.Ordinal);

            // dec-octet "." dec-octet "." dec-octet "." dec-octet
            var innerLexer = Concatenation.Create(a, b, a, b, a, b, a);

            // IPv4address
            return(new IPv4AddressLexer(innerLexer));
        }
        public override ILexer <AbsoluteUri> Create()
        {
            var colon      = Terminal.Create(@":", StringComparer.Ordinal);
            var qm         = Terminal.Create(@"?", StringComparer.Ordinal);
            var queryPart  = Concatenation.Create(qm, QueryLexerFactory.Create());
            var optQuery   = Option.Create(queryPart);
            var innerLexer = Concatenation.Create(
                SchemeLexerFactory.Create(),
                colon,
                HierarchicalPartLexerFactory.Create(),
                optQuery);

            return(new AbsoluteUriLexer(innerLexer));
        }