コード例 #1
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));
        }
コード例 #2
0
        public override ILexer <PathNoScheme> Create()
        {
            // segment-nz-nc *( "/" segment )
            var innerLexer = Concatenation.Create(
                SegmentNonZeroLengthNoColonsLexerFactory.Create(),
                Repetition.Create(
                    Concatenation.Create(
                        Terminal.Create(@"/", StringComparer.Ordinal),
                        SegmentLexerFactory.Create()),
                    0,
                    int.MaxValue));

            // path-noscheme
            return(new PathNoSchemeLexer(innerLexer));
        }
コード例 #3
0
        public override ILexer <PathAbsolute> Create()
        {
            // "/" [ segment-nz *( "/" segment ) ]
            var innerLexer = Concatenation.Create(
                Terminal.Create(@"/", StringComparer.Ordinal),
                Option.Create(
                    Concatenation.Create(
                        SegmentNonZeroLengthLexerFactory.Create(),
                        Repetition.Create(
                            Concatenation.Create(
                                Terminal.Create(@"/", StringComparer.Ordinal),
                                SegmentLexerFactory.Create()),
                            0,
                            int.MaxValue))));

            // path-absolute
            return(new PathAbsoluteLexer(innerLexer));
        }