public Expression Transform(Expression expression) { var evaluator = new SubtreeEvaluator( new Nominator(CanBeEvaluatedLocally).Nominate(expression)); return(evaluator.Eval(expression)); }
/// <summary> /// Performs evaluation & replacement of independent sub-trees /// </summary> /// <param name="expression"> The root of the expression tree. </param> /// <param name="fnCanBeEvaluated"> A function that decides whether a given expression node can be part of the local function. </param> /// <returns> A new tree with sub-trees evaluated and replaced. </returns> public static Expression PartialEval(Expression expression, Func <Expression, bool> fnCanBeEvaluated) { var nominator = new Nominator(fnCanBeEvaluated); var subtreeEvaluator = new SubtreeEvaluator(nominator.Nominate(expression)); return(subtreeEvaluator.Eval(expression)); }
public Expression Transform(Expression expression) { var evaluator = new SubtreeEvaluator( new Nominator(CanBeEvaluatedLocally).Nominate(expression)); return evaluator.Eval(expression); }
public static Expression PartialEval(Expression expression) { Nominator nominator = new Nominator(); SubtreeEvaluator evaluator = new SubtreeEvaluator(nominator.Nominate(expression)); return(evaluator.Eval(expression)); }
public static Expression Eval(Expression expression, Func <Expression, bool> fnCanBeEvaluated, Func <ConstantExpression, Expression> fnPostEval) { if (fnCanBeEvaluated == null) { fnCanBeEvaluated = PartialEvaluator.CanBeEvaluatedLocally; } return(SubtreeEvaluator.Eval(Nominator.Nominate(fnCanBeEvaluated, expression), fnPostEval, expression)); }
/// <summary> /// Performs evaluation replacement of independent sub-trees /// </summary> /// <param name="expression">The root of the expression tree.</param> /// <param name="fnCanBeEvaluated">A function that decides whether a given expression node can be part of the local function.</param> /// <returns>A new tree with sub-trees evaluated and replaced.</returns> public static Expression Eval(System.Linq.Expressions.Expression expression, Func <System.Linq.Expressions.Expression, bool> fnCanBeEvaluated) { if (fnCanBeEvaluated == null) { fnCanBeEvaluated = AtkPartialEvaluator.CanBeEvaluatedLocally; } return(SubtreeEvaluator.Eval(Nominator.Nominate(fnCanBeEvaluated, expression), expression)); }
/// <summary> /// Performs evaluation & replacement of independent sub-trees /// </summary> /// <param name="expression">The root of the expression tree.</param> /// <param name="fnCanBeEvaluated">A function that decides whether a given expression node can be part of the local function.</param> /// <returns>A new tree with sub-trees evaluated and replaced.</returns> private static Expression Eval(Expression expression, Func <Expression, bool> fnCanBeEvaluated) { if (fnCanBeEvaluated == null) { fnCanBeEvaluated = PartialEvaluator.CanBeEvaluatedLocally; } return(SubtreeEvaluator.Eval(Nominator.Nominate(fnCanBeEvaluated, expression), expression)); }
/// <summary> /// Performs evaluation & replacement of independent sub-trees /// </summary> /// <param name="expression">The root of the expression tree.</param> /// <param name="fnCanBeEvaluated">A function that decides whether a given expression node can be part of the local function.</param> /// <returns>A new tree with sub-trees evaluated and replaced.</returns> public static Expression PartialEval(Expression expression, Func <Expression, bool> fnCanBeEvaluated) { var nominator = new Nominator(fnCanBeEvaluated); var candidates = nominator.Nominate(expression); var subtreeEvaluator = new SubtreeEvaluator(candidates); var newExpression = subtreeEvaluator.Eval(expression); return(newExpression); }
public static Expression PartialEval(Expression expression, Func <Expression, bool> fnCanBeEvaluated, ref int placeholderCount) { return(SubtreeEvaluator.Eval(new EvaluatorNominator(fnCanBeEvaluated).Nominate(expression), expression, ref placeholderCount)); }
/// <summary> /// Performs evaluation and replacement of independent sub-trees /// </summary> /// <param name="expression">The root of the expression tree.</param> /// <param name="fnCanBeEvaluated">A function that decides whether a given expression node can be part of the local function.</param> /// <returns>A new tree with sub-trees evaluated and replaced.</returns> public static Expression Eval(Expression expression, Func <Expression, bool> fnCanBeEvaluated) { return(SubtreeEvaluator.Eval(Nominator.Nominate(fnCanBeEvaluated, expression), expression)); }
/// <summary> /// Performs evaluation & replacement of independent sub-trees /// </summary> /// <param name="expression"> The root of the expression tree. </param> /// <param name="fnCanBeEvaluated"> A function that decides whether a given expression node can be part of the local function. </param> /// <returns> A new tree with sub-trees evaluated and replaced. </returns> public static Expression PartialEval(Expression expression, Func<Expression, bool> fnCanBeEvaluated) { var nominator = new Nominator(fnCanBeEvaluated); var subtreeEvaluator = new SubtreeEvaluator(nominator.Nominate(expression)); return subtreeEvaluator.Eval(expression); }
public static Expression PartialEval(Expression expression) { Nominator nominator = new Nominator(); SubtreeEvaluator evaluator = new SubtreeEvaluator(nominator.Nominate(expression)); return evaluator.Eval(expression); }
/// <summary> /// Performs evaluation & replacement of independent sub-trees /// </summary> /// <param name="expression">The root of the expression tree.</param> /// <param name="fnCanBeEvaluated"> /// A function that decides whether a given expression node can be part of the local /// function. /// </param> /// <returns>A new tree with sub-trees evaluated and replaced.</returns> static public Expression PartialEval(Expression expression, Func <Expression, bool> fnCanBeEvaluated) { return(SubtreeEvaluator.Eval(expression, Nominator.Nominate(fnCanBeEvaluated, expression))); }
/// <summary> /// Performs evaluation & replacement of independent sub-trees /// </summary> /// <param name="expression">The root of the expression tree.</param> /// <param name="fnCanBeEvaluated">A function that decides whether a given expression node can be part of the local function.</param> /// <returns>A new tree with sub-trees evaluated and replaced.</returns> public static Expression PartialEval(Expression expression, Func <Expression, bool> fnCanBeEvaluated, TextWriter logger) { return(SubtreeEvaluator.Eval(Nominator.Nominate(fnCanBeEvaluated, expression, logger), expression, logger)); }
/// <summary> /// <![CDATA[ /// Performs evaluation & replacement of independent sub-trees > /// ]]> /// </summary> /// <param name="expression">The root of the expression tree.</param> /// <returns>A new tree with sub-trees evaluated and replaced.</returns> public static Expression PartialEval(Expression expression) { var treeEvaluator = new SubtreeEvaluator(); return(treeEvaluator.Eval(expression)); }
/// <summary> /// <![CDATA[ /// Performs evaluation & replacement of independent sub-trees > /// ]]> /// </summary> /// <param name="expression">The root of the expression tree.</param> /// <returns>A new tree with sub-trees evaluated and replaced.</returns> public static Expression PartialEval(Expression expression) { var treeEvaluator = new SubtreeEvaluator(); return treeEvaluator.Eval(expression); }