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;
 }