public static bool TryParseAll <T>(TokenListParser <ExpressionToken, T> parser, string source, out T value, out string error) { if (source == null) { throw new ArgumentNullException(nameof(source)); } var tokens = ExpressionTokenizer.TryTokenize(source); if (!tokens.HasValue) { value = default; error = tokens.ToString(); return(false); } var result = parser.AtEnd()(tokens.Value); if (!result.HasValue) { value = default; error = result.ToString(); return(false); } value = result.Value; error = null; return(true); }
public static TokenListParserResult <SelectToken, T> Parse <T>(TokenListParser <SelectToken, T> parser, string input) { var tokenizer = new SelectTokenizer(); var tokens = tokenizer.Tokenize(input); return(parser.AtEnd().TryParse(tokens)); }