コード例 #1
0
        public void ExpressionEvaluator_Visit_FactorOperation()
        {
            FactorExpressionNode sumExpression = new FactorExpressionNode()
            {
                Left = new FloatValueNode {
                    Value = 10.5f
                },
                OperationNode = new FactorOperationNode()
                {
                    Operator = Operators.MultOp
                },
                Right = new IntValueNode {
                    Value = 5
                }
            };

            ExpressionEvaluator <float> evaluator = new ExpressionEvaluator <float>(new FloatCalculator(sumExpression.Token));

            sumExpression.Accept(evaluator);

            Assert.That(evaluator.Result == 52.5f, "evaluator.Result == 52.5");
        }
コード例 #2
0
        public void Visit(FactorExpressionNode factorExpressionNode)
        {
            factorExpressionNode.Left.Accept(this);
            T a = Result;

            factorExpressionNode.Right.Accept(this);
            T b = Result;

            switch (factorExpressionNode.OperationNode.Operator)
            {
            case Operators.MultOp:
                Result = Calculator.Multiply(a, b);
                break;

            case Operators.DivOp:
                Result = Calculator.Divide(a, b);
                break;

            default:
                DazelLogger.EmitError($"Operation {factorExpressionNode.OperationNode.Operator} is not valid.", factorExpressionNode.Token);
                break;
            }
        }
コード例 #3
0
ファイル: AstPrinter.cs プロジェクト: chhoumann/p4
 public void Visit(FactorExpressionNode factorExpressionNode)
 {
     factorExpressionNode.Left.Accept(this);
     factorExpressionNode.OperationNode.Accept(this);
     factorExpressionNode.Right.Accept(this);
 }
コード例 #4
0
 public void Visit(FactorExpressionNode factorExpressionNode)
 {
 }