示例#1
0
        public void VariableTestMethod()
        {
            String expression = @"result1 = num1 + num2;" +
                                @"result2 = result1 * 10;" +
                                @"result2";

            ExpressionCompiler compiler = new ExpressionCompiler();
            ExpressionContext  context  = new ExpressionContext();

            Int32 num1 = 1;
            Int32 num2 = 2;

            context.Bind(nameof(num1), num1);
            context.Bind(nameof(num2), num2);

            Assert.IsTrue(compiler.TryEvaluate(expression, context, out Int32 value) && value == (num1 + num2) * 10 &&
                          context.TryLookup("result1", out Int32 result1) && result1 == num1 + num2 &&
                          context.TryLookup("result2", out Int32 result2) && result2 == value);
        }
示例#2
0
        public void ConstantTestMethod()
        {
            String expression = @"PI * Pow(r, 2);";

            ExpressionCompiler compiler = new ExpressionCompiler();
            ExpressionContext  context  = new ExpressionContext();

            context.Bind("r", 10);

            Assert.IsTrue(compiler.TryEvaluate(expression, context, out Decimal value) && value == (Decimal)(Math.PI * Math.Pow(10, 2)));
        }
示例#3
0
        public override Object Evaluate(ExpressionContext context)
        {
            if (Operand1 is VariableExpression variableExpression)
            {
                OperandValue2 = Operand2.Evaluate(context);

                context.Bind(variableExpression.VariableName, OperandValue2);
            }

            return(null);
        }