public Expression Transform(Expression expression)
        {
            var evaluator = new SubtreeEvaluator(
                new Nominator(CanBeEvaluatedLocally).Nominate(expression));

            return(evaluator.Eval(expression));
        }
Exemple #2
0
        /// <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);
        }
Exemple #4
0
        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));
 }
Exemple #8
0
            /// <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);
            }
Exemple #9
0
 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);
 }
Exemple #12
0
 public static Expression PartialEval(Expression expression)
 {
     Nominator nominator = new Nominator();
     SubtreeEvaluator evaluator = new SubtreeEvaluator(nominator.Nominate(expression));
     return evaluator.Eval(expression);
 }
Exemple #13
0
 /// <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)));
 }
Exemple #14
0
        /// <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));
        }
Exemple #15
0
        /// <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));
        }
Exemple #16
0
 /// <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);
 }