Beispiel #1
0
        private MultilineString FetchMultipleLines()
        {
            var stringBuilder = new StringBuilder();

            var startLineIndex = _lineIndex + 1;

            int?endLineIndex = null;

            while (FetchLine())
            {
                endLineIndex = _lineIndex;

                var multilineMatch = _line.MatchAgainst(ParsingHelper.MultiLineRegex);
                if (!multilineMatch.Success)
                {
                    _skipFetchOnce = true;
                    break;
                }

                var value = multilineMatch.GetSucceededGroupValue(ParsingHelper.ValueGroupName);
                stringBuilder.Append(value);
            }

            return(endLineIndex.HasValue
                ? new MultilineString(
                       stringBuilder.ToString(),
                       ValueRange.Create(startLineIndex, endLineIndex.Value))
                : new MultilineString(null, ValueRange.Create(startLineIndex, startLineIndex)));
        }
Beispiel #2
0
        public void Initialize()
        {
            var upperCaseValueRangeLexer = ValueRange.Create('\x41', '\x5A');
            var lowerCaseValueRangeLexer = ValueRange.Create('\x61', '\x7A');

            InnerLexer = Alternation.Create(upperCaseValueRangeLexer, lowerCaseValueRangeLexer);
        }
        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 <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 <DecimalOctet> Create()
        {
            // %x30-35
            var a = ValueRange.Create('\x30', '\x35');

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

            // "25" %x30-35
            var c = Concatenation.Create(b, a);

            // DIGIT

            // %x30-34
            var e = ValueRange.Create('\x30', '\x34');

            // "2"
            var f = Terminal.Create("2", StringComparer.Ordinal);

            // "2" %x30-34 DIGIT
            var digitLexer = DigitLexerFactory.Create();
            var g          = Concatenation.Create(f, e, digitLexer);

            // 2DIGIT
            var h = Repetition.Create(digitLexer, 2, 2);

            // "1"
            var i = Terminal.Create("1", StringComparer.Ordinal);

            // "1" 2DIGIT
            var j = Concatenation.Create(i, h);

            // %x31-39
            var k = ValueRange.Create('\x31', '\x39');

            // %x31-39 DIGIT
            var l = Concatenation.Create(k, digitLexer);

            // "25" %x30-35 / "2" %x30-34 DIGIT / "1" 2DIGIT / %x31-39 DIGIT / DIGIT
            var m = Alternation.Create(c, g, j, l, digitLexer);

            // dec-octet
            return(new DecimalOctetLexer(m));
        }
Beispiel #6
0
 public void Initialize()
 {
     InnerLexer = ValueRange.Create('\x21', '\x7E');
 }
        public override ILexer <ObsoleteText> Create()
        {
            var innerLexer = ValueRange.Create(0x80, 0xFF, Encoding.UTF8);

            return(new ObsoleteTextLexer(innerLexer));
        }
Beispiel #8
0
 public void Initialize()
 {
     InnerLexer = Alternation.Create(
         ValueRange.Create('\x00', '\x1F'),
         Terminal.Create("\x7F", StringComparer.Ordinal));
 }
Beispiel #9
0
 public void Initialize()
 {
     InnerLexer = ValueRange.Create('\x30', '\x39');
 }