Esempio n. 1
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);
        }
Esempio n. 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));
        }
Esempio n. 3
0
        public void Initialize()
        {
            var upperCaseValueRangeLexer = ValueRange.Create('\x41', '\x5A');
            var lowerCaseValueRangeLexer = ValueRange.Create('\x61', '\x7A');

            InnerLexer = Alternation.Create(upperCaseValueRangeLexer, lowerCaseValueRangeLexer);
        }
Esempio n. 4
0
        public override ILexer <Reserved> Create()
        {
            var innerLexer = Alternation.Create(
                GenericDelimiterLexerFactory.Create(),
                SubcomponentsDelimiterLexerFactory.Create());

            return(new ReservedLexer(innerLexer));
        }
        public override ILexer <UriReference> Create()
        {
            var innerLexer = Alternation.Create(
                UriLexerFactory.Create(),
                RelativeReferenceLexerFactory.Create());

            return(new UriReferenceLexer(innerLexer));
        }
Esempio n. 6
0
        public override ILexer <ChunkExtensionValue> Create()
        {
            var innerLexer = Alternation.Create(
                Token.Create(),
                QuotedString.Create());

            return(new ChunkExtensionValueLexer(innerLexer));
        }
        public override ILexer <FieldVisibleCharacter> Create()
        {
            var innerLexer = Alternation.Create(
                VisibleCharacterLexerFactory.Create(),
                ObsoleteTextLexerFactory.Create());

            return(new FieldVisibleCharacterLexer(innerLexer));
        }
Esempio n. 8
0
        public override ILexer <Host> Create()
        {
            var innerLexer = Alternation.Create(
                IPLiteralLexerFactory.Create(),
                IPv4AddressLexerFactory.Create(),
                RegisteredNameLexerFactory.Create());

            return(new HostLexer(innerLexer));
        }
Esempio n. 9
0
        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));
        }
Esempio n. 10
0
        public override ILexer <RequiredWhiteSpace> Create()
        {
            var innerLexer = Repetition.Create(
                Alternation.Create(SpaceFactory.Create(), HorizontalTabLexerFactory.Create()),
                1,
                int.MaxValue);

            return(new RequiredWhiteSpaceLexer(innerLexer));
        }
Esempio n. 11
0
        public override ILexer <RequestTarget> Create()
        {
            var innerLexer = Alternation.Create(
                OriginFormLexerFactory.Create(),
                AbsoluteFormLexerFactory.Create(),
                AuthorityFormLexerFactory.Create(),
                AsteriskFormLexerFactory.Create());

            return(new RequestTargetLexer(innerLexer));
        }
Esempio n. 12
0
        public override ILexer <Query> Create()
        {
            var alternationLexer = Alternation.Create(
                PathCharacterLexerFactory.Create(),
                Terminal.Create(@"/", StringComparer.Ordinal),
                Terminal.Create(@"?", StringComparer.Ordinal));
            var fragmentRepetitionLexer = Repetition.Create(alternationLexer, 0, int.MaxValue);

            return(new QueryLexer(fragmentRepetitionLexer));
        }
Esempio n. 13
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 <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 <TransferCoding> Create()
        {
            var innerLexer = Alternation.Create(
                Terminal.Create(@"chunked", StringComparer.OrdinalIgnoreCase),
                Terminal.Create(@"compress", StringComparer.OrdinalIgnoreCase),
                Terminal.Create(@"deflate", StringComparer.OrdinalIgnoreCase),
                Terminal.Create(@"gzip", StringComparer.OrdinalIgnoreCase),
                TransferExtensionLexerFactory.Create());

            return(new TransferCodingLexer(innerLexer));
        }
Esempio n. 16
0
        public override ILexer <Path> Create()
        {
            var innerLexer = Alternation.Create(
                PathAbsoluteOrEmptyLexerFactory.Create(),
                PathAbsoluteLexerFactory.Create(),
                PathNoSchemeLexerFactory.Create(),
                PathRootlessLexerFactory.Create(),
                PathEmptyLexerFactory.Create());

            return(new PathLexer(innerLexer));
        }
Esempio n. 17
0
        public override ILexer <PathCharacter> Create()
        {
            var innerLexer = Alternation.Create(
                UnreservedLexerFactory.Create(),
                PercentEncodingLexerFactory.Create(),
                SubcomponentsDelimiterLexerFactory.Create(),
                Terminal.Create(@":", StringComparer.Ordinal),
                Terminal.Create(@"@", StringComparer.Ordinal));

            return(new PathCharacterLexer(innerLexer));
        }
Esempio n. 18
0
 public void Initialize()
 {
     InnerLexer = Alternation.Create(
         Grammar.Rule("DIGIT"),
         Terminal.Create(@"A", StringComparer.OrdinalIgnoreCase),
         Terminal.Create(@"B", StringComparer.OrdinalIgnoreCase),
         Terminal.Create(@"C", StringComparer.OrdinalIgnoreCase),
         Terminal.Create(@"D", StringComparer.OrdinalIgnoreCase),
         Terminal.Create(@"E", StringComparer.OrdinalIgnoreCase),
         Terminal.Create(@"F", StringComparer.OrdinalIgnoreCase));
 }
        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));
        }
Esempio n. 20
0
        public override ILexer <FieldValue> Create()
        {
            var innerLexer = Repetition.Create(
                Alternation.Create(
                    FieldContentLexerFactory.Create(),
                    ObsoleteFoldLexerFactory.Create()),
                0,
                int.MaxValue)
            ;

            return(new FieldValueLexer(innerLexer));
        }
Esempio n. 21
0
        public override ILexer <Unreserved> Create()
        {
            var innerLexer = Alternation.Create(
                AlphaLexerFactory.Create(),
                DigitLexerFactory.Create(),
                Terminal.Create(@"-", StringComparer.Ordinal),
                Terminal.Create(@".", StringComparer.Ordinal),
                Terminal.Create(@"_", StringComparer.Ordinal),
                Terminal.Create(@"~", StringComparer.Ordinal));

            return(new UnreservedLexer(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 <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 <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));
        }
        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));
        }
Esempio n. 27
0
        public override ILexer <UserInformation> Create()
        {
            var innerLexer = Repetition.Create(
                Alternation.Create(
                    UnreservedLexerFactory.Create(),
                    PercentEncodingLexerFactory.Create(),
                    SubcomponentsDelimiterLexerFactory.Create(),
                    Terminal.Create(@":", StringComparer.Ordinal)),
                0,
                int.MaxValue);

            return(new UserInformationLexer(innerLexer));
        }
        public override ILexer <RegisteredName> Create()
        {
            var innerLexer =
                Repetition.Create(
                    Alternation.Create(
                        UnreservedLexerFactory.Create(),
                        PercentEncodingLexerFactory.Create(),
                        SubcomponentsDelimiterLexerFactory.Create()),
                    0,
                    int.MaxValue);

            return(new RegisteredNameLexer(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));
        }
Esempio n. 30
0
        public override ILexer <SegmentNonZeroLengthNoColons> Create()
        {
            var alternationLexer = Alternation.Create(
                UnreservedLexerFactory.Create(),
                PercentEncodingLexerFactory.Create(),
                SubcomponentsDelimiterLexerFactory.Create(),
                Terminal.Create(@"@", StringComparer.Ordinal));
            var segmentNonZeroLengthNoColonsRepetitionLexer = Repetition.Create(
                alternationLexer,
                1,
                int.MaxValue);

            return(new SegmentNonZeroLengthNoColonsLexer(segmentNonZeroLengthNoColonsRepetitionLexer));
        }