public static bool TryParse(string filterExpression, out FilterExpression root, out string error) { if (filterExpression == null) { throw new ArgumentNullException(nameof(filterExpression)); } var tokenList = _tokenizer.TryTokenize(filterExpression); var errorList = new List <string>(); if (!tokenList.HasValue) { error = tokenList.ToString(); root = null; return(false); } var result = FilterExpressionTokenParsers.Expr.AtEnd().TryParse(tokenList.Value); if (!result.HasValue) { error = result.ToString(); root = null; return(false); } root = result.Value; error = null; return(true); }