示例#1
0
        public IExpression Evaluate <T, U>(IBinaryExpression <T, U> ex, IContext context)
        {
            IBinaryFunctionExpression <T, U>        TheFunction           = ex.Function;
            ILiteralExpression <T>                  literalLeft           = this.get <T>(ex.Left, this, context);
            ILiteralExpression <T>                  literalRight          = this.get <T>(ex.Right, this, context);
            ILiteralBinaryFunctionExpression <T, U> literalBinaryFunction = this.get <T, U>(ex.Function, this, context);

            return(literalBinaryFunction.Invoke(literalLeft.Item, literalRight.Item));
        }
示例#2
0
        private ILiteralBinaryFunctionExpression <T, U> get <T, U>(IBinaryFunctionExpression <T, U> expression, IEvaluator ev, IContext context)
        {
            IFunctionExpression <T, U> ex = expression;

            while (!ex.IsLiteral)
            {
                ex = ex.Evaluate(this, context);
            }
            return(ex as ILiteralBinaryFunctionExpression <T, U>);
        }