public OptimizeOutput( IExpressionOutput <T> output, OptimizeModes mode, bool checks) { Debug.Assert(output != null); this.output = output; this.mode = mode; this.interp = QuickInterpret <T> .Create(checks, null); }
/// <summary> /// Evaluates the given <paramref name="expression"/> /// using quick interpretation mode.</summary> /// <param name="expression">Expression to evaluate.</param> /// <param name="arguments">Expression arguments values.</param> /// <exception cref="SyntaxException"> /// <paramref name="expression"/> contains /// syntax error(s) and can't be evaluated.</exception> /// <exception cref="ArgumentNullException"> /// <paramref name="expression"/> is null.<br/>-or-<br/> /// <paramref name="arguments"/> is null.</exception> /// <exception cref="ArgumentException"> /// Wrong arguments count was specified by the /// <paramref name="arguments"/> parameter.</exception> /// <exception cref="ArithmeticException"> /// Expression evaluation thrown the /// <see cref="ArithmeticException"/>.</exception> /// <returns>Evaluated value.</returns> public T Evaluate(string expression, params T[] arguments) { if (expression == null) { throw new ArgumentNullException("expression"); } if (arguments == null) { throw new ArgumentNullException("arguments"); } if (arguments.Length != ArgsCount) { throw WrongArgsCount(arguments.Length, ArgsCount); } var interp = QuickInterpret <T> .Create(OverflowCheck, arguments); ParseSimple(expression, interp); return(interp.Result); }