public ExpressionParser(IReadOnlyList<ParameterExpression> parameters, string expression, object[] values)
{
if (expression == null) throw new ArgumentNullException(nameof(expression));
if (_keywords == null) _keywords = CreateKeywords();
_symbols = new Dictionary<string, object>(StringComparer.OrdinalIgnoreCase);
_literals = new Dictionary<Expression, string>();
if (parameters != null) ProcessParameters(parameters);
if (values != null) ProcessValues(values);
_text = expression;
_textLen = _text.Length;
SetTextPos(0);
NextToken();
}