summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/expressions.hpp97
-rw-r--r--include/lexer.hpp9
2 files changed, 97 insertions, 9 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 */
diff --git a/include/lexer.hpp b/include/lexer.hpp
index 27779ea..39d8411 100644
--- a/include/lexer.hpp
+++ b/include/lexer.hpp
@@ -7,15 +7,6 @@
#ifndef LEXER_H
#define LEXER_H
-enum function_name{
- sin,
- cos,
- tan,
- csc,
- sec,
- ctg
-};
-
enum token_type{
sum,
substraction,