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(); }
public override string Visit(BinaryExprNode node) { var left = Visit(node.Left); var right = Visit(node.Right); var op = node.Id; return($"({left} {op} {right})"); }