Example #1
0
        private Expr EvaluateBinaryExpression(BinaryExprNode node)
        {
            Expr left  = this.Visit(node.LeftOperand);
            Expr right = this.Visit(node.RightOperand);

            return(this.TryEvaluate(node, $"{left} {node.Operator.Symbol} {right}"));
        }
        public SymConst Visit(BinaryExprNode node)
        {
            var left  = node.Left.Accept(this);
            var right = node.Right.Accept(this);

            switch (node.Operation)
            {
            case OperatorToken op:
                switch (op.Value)
                {
                case Constants.Operators.Plus:
                    return(EvalPlus(left, right));

                case Constants.Operators.Minus:
                    return(EvalMinus(left, right));

                case Constants.Operators.Multiply:
                    return(EvalMultiply(left, right));

                case Constants.Operators.Divide:
                    return(EvalDivide(left, right));
                }
                break;
            }

            throw EvalException();
        }
Example #3
0
        public override string Visit(BinaryExprNode node)
        {
            var left  = Visit(node.Left);
            var right = Visit(node.Right);
            var op    = node.Id;

            return($"({left} {op} {right})");
        }