private Cursol SkipBlankAsync(Cursol current) { while (true) { bool isSuccess; (isSuccess, current, _) = WhiteSpace.Parse(current); if (!isSuccess) { return(current); } } }
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);
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())); }
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); } } }
protected override (bool isSuccess, Cursol cursol, T parsed) ParseCore(Cursol cursol) { HasBreakPoint(); return(Parser.Parse(cursol)); }
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)); }
protected override (bool isSuccess, Cursol cursol, T parsed) ParseCore(Cursol cursol) => ParserGetter().Parse(cursol);
protected override (bool isSuccess, Cursol cursol, char parsed) ParseCore(Cursol cursol) => ExpectChars.Parse(cursol) switch
protected override (bool isSuccess, Cursol cursol, char parsed) ParseCore(Cursol cursol) => cursol.Current switch
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); } }
protected override (bool isSuccess, Cursol cursol, IEnumerable <T> parsed) ParseCore(Cursol cursol) => Parser.Parse(cursol);
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));