コード例 #1
0
 private Cursol SkipBlankAsync(Cursol current)
 {
     while (true)
     {
         bool isSuccess;
         (isSuccess, current, _) = WhiteSpace.Parse(current);
         if (!isSuccess)
         {
             return(current);
         }
     }
 }
コード例 #2
0
        protected override (bool isSuccess, Cursol cursol, T parsed) ParseCore(Cursol cursol)
        {
            foreach (var parser in Parsers)
            {
                var result = parser.Parse(cursol);

                if (result.isSuccess)
                {
                    return(result);
                }
            }
            return(false, cursol, default);
コード例 #3
0
        protected override (bool isSuccess, Cursol cursol, string parsed)  ParseCore(Cursol cursol)
        {
            var current = SkipBlankAsync(cursol);

            var returnValue = new List <char>();

            foreach (var parser in Parsers)
            {
                bool isSuccess;
                char parsed;
                (isSuccess, current, parsed) = parser.Parse(current);
                if (!isSuccess)
                {
                    return(false, cursol, null);
                }
                returnValue.Add(parsed);
            }
            current = SkipBlankAsync(current);
            return(true, current, new string(returnValue.ToArray()));
        }
コード例 #4
0
        protected override (bool isSuccess, Cursol cursol, IEnumerable <T> parsed) ParseCore(Cursol cursol)
        {
            var  parseds = new List <T>();
            var  current = cursol;
            bool isSuccess;
            T    parsed;
            var  beforeDelimiter = current;

            while (true)
            {
                (isSuccess, current, parsed) = Sequence.Parse(current);
                if (!isSuccess)
                {
                    return(true, beforeDelimiter, parseds);
                }
                parseds.Add(parsed);
                beforeDelimiter         = current;
                (isSuccess, current, _) = Delimiter.Parse(current);
                if (!isSuccess)
                {
                    return(true, beforeDelimiter, parseds);
                }
            }
        }
コード例 #5
0
 protected override (bool isSuccess, Cursol cursol, T parsed) ParseCore(Cursol cursol)
 {
     HasBreakPoint();
     return(Parser.Parse(cursol));
 }
コード例 #6
0
 protected override (bool isSuccess, Cursol cursol, Optional <T> parsed) ParseCore(Cursol cursol)
 {
     var(isSuccess, afterCursol, parsed) = Parser.Parse(cursol);
     return(true, afterCursol, new Optional <T>(isSuccess, parsed));
 }
コード例 #7
0
 protected override (bool isSuccess, Cursol cursol, T parsed) ParseCore(Cursol cursol)
 => ParserGetter().Parse(cursol);
コード例 #8
0
 protected override (bool isSuccess, Cursol cursol, char parsed) ParseCore(Cursol cursol)
 => ExpectChars.Parse(cursol) switch
コード例 #9
0
 protected override (bool isSuccess, Cursol cursol, char parsed) ParseCore(Cursol cursol)
 => cursol.Current switch
コード例 #10
0
        protected override (bool isSuccess, Cursol cursol, IEnumerable <T> parsed) ParseCore(Cursol cursol)
        {
            var parseds = new List <T> {
            };
            bool isSuccess;
            T    parsed;
            var  current = cursol;

            while (true)
            {
                (isSuccess, current, parsed) = Parser.Parse(current);
                if (!isSuccess)
                {
                    return(true, current, parseds);
                }
                parseds.Add(parsed);
            }
        }
コード例 #11
0
 protected override (bool isSuccess, Cursol cursol, IEnumerable <T> parsed) ParseCore(Cursol cursol)
 => Parser.Parse(cursol);
コード例 #12
0
        protected override (bool isSuccess, Cursol cursol, T parsed) ParseCore(Cursol cursol)
        {
            var(isSuccess, afterCursol, parsed) = Parser.Parse(cursol);

            return(isSuccess, afterCursol, (isSuccess ? Converter(parsed) : default));