#if !defined(_ARITHEXPR_H_) #define _ARITHEXPR_H_ // ARITHMETIC EXPRESSIONS #include "expression.h" // ADDITIION class binary_plus: public binary_operator_expression { public: binary_plus(expression*,expression*); double evaluate(double*) const; expression* clone() const; void print(ostream&) const; expression* simplify() const; }; // SUBTRACTION class binary_minus: public binary_operator_expression { public: binary_minus(expression*,expression*); double evaluate(double*) const; expression* clone() const; void print(ostream&) const; expression* simplify() const; }; // DIVISION class division: public binary_operator_expression { public: division(expression*,expression*); double evaluate(double*) const; expression* clone() const; void print(ostream&) const; expression* simplify() const; }; // MULTIPLICATION class multiplication: public binary_operator_expression { public : multiplication(expression*,expression*); double evaluate(double*) const; expression* clone() const; void print(ostream&) const; expression* simplify() const; }; // THE 'POSITIVE' SIGN class unary_plus: public unary_operator_expression { public: unary_plus(expression*); double evaluate(double*) const; expression* clone() const; void print(ostream&) const; expression* simplify() const; }; // THE 'NEGATIVE' SIGN class unary_minus: public unary_operator_expression { public: unary_minus(expression*); double evaluate(double*) const; expression* clone() const; void print(ostream&) const; expression* simplify() const; }; // SIN FUNCTION class sin_function: public function_call { private: expression* arg[1]; public: sin_function(expression*); double evaluate(double*) const; expression* clone() const; void print(ostream&) const; expression* simplify() const; }; // COS FUNCTION class cos_function: public function_call { private: expression* arg[1]; public: cos_function(expression*); double evaluate(double*) const; expression* clone() const; void print(ostream&) const; expression* simplify() const; }; // TAN FUNCTION class tan_function: public function_call { private: expression* arg[1]; public: tan_function(expression*); double evaluate(double*) const; expression* clone() const; void print(ostream&) const; expression* simplify() const; }; #endif