summaryrefslogtreecommitdiff
path: root/include/expressions.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'include/expressions.hpp')
-rw-r--r--include/expressions.hpp97
1 files changed, 97 insertions, 0 deletions
diff --git a/include/expressions.hpp b/include/expressions.hpp
new file mode 100644
index 0000000..5d8ed03
--- /dev/null
+++ b/include/expressions.hpp
@@ -0,0 +1,97 @@
+/* PIA - Lenguajes Modernos de Programación
+ * FACULTAD DE CIENCIAS FÍSICO MATEMÁTICAS
+ * Luis Sebastián Martínez Vega - LCC */
+
+#include <string>
+#ifndef EXPRESSIONS_H
+#define EXPRESSIONS_H
+
+enum trig_functions {
+ sin,
+ cos,
+ tan,
+ csc,
+ sec,
+ ctg
+};
+
+class Expression {
+private:
+ Expression *left;
+ Expression *right;
+ std::string repr;
+ void setRepr();
+ void delTree();
+public:
+ Expression(Expression *left, Expression *right);
+ virtual ~Expression() = 0;
+ std::string getRepr();
+ Expression *getLeft();
+ Expression *getRight();
+};
+
+class Literal : public Expression {
+private:
+ int value;
+public:
+ Literal();
+ ~Literal();
+ int getValue();
+};
+
+class Function : public Expression {
+private:
+ trig_functions function_name;
+public:
+ Function();
+ ~Function();
+ trig_functions getFunctionName();
+};
+
+class Variable : public Expression {
+private:
+ char name;
+public:
+ Variable();
+ ~Variable();
+ char getName();
+};
+
+class AddExpression : public Expression {
+public:
+ AddExpression();
+ ~AddExpression();
+};
+
+class SubExpression : public Expression {
+public:
+ SubExpression();
+ ~SubExpression();
+};
+
+class NegationExpression : public Expression {
+public:
+ NegationExpression();
+ ~NegationExpression();
+};
+
+class DivisionExpression : public Expression {
+public:
+ DivisionExpression();
+ ~DivisionExpression();
+};
+
+class MultiplicationExpression : public Expression {
+public:
+ MultiplicationExpression();
+ ~MultiplicationExpression();
+};
+
+class PowerExpression : public Expression {
+public:
+ PowerExpression();
+ ~PowerExpression();
+};
+
+
+#endif /* EXPRESSIONS_H */