private Expression calculate(Binary op, NumberExpression left, NumberExpression right) { switch (op) { case Binary.Add: return left.Add(right); case Binary.Subtract: return left.Subtract(right); case Binary.Multiply: return left.Multiply(right); case Binary.Divide: return left.Divide(right); case Binary.Power: return left.Power(right); } throw new Exception("Unknown operator"); }
private static bool equalsNumber(NumberExpression left, NumberExpression right) { return left.Value == right.Value; }