public static IValue Evaluate(IExpression expression, Func <string, IValue> getAnswer) { var evaluator = new QLExpressionEvaluator(getAnswer); try { expression.Accept(evaluator); } catch (RuntimeBinderException) { throw new InvalidExpressionException(expression); } return(evaluator._result); }
private bool EvaluateCondition(IExpression expression) => QLExpressionEvaluator.AsBool(QLExpressionEvaluator.Evaluate(expression, GetAnswer));
public void Visit(ComputedQuestion question) { _answers[question.Id] = QLExpressionEvaluator.Evaluate(question.Computation, GetAnswer); AddQuestion(question, true); }