diff options
author | HombreLaser <sebastian-440@live.com> | 2022-04-03 16:42:07 -0500 |
---|---|---|
committer | HombreLaser <sebastian-440@live.com> | 2022-04-03 16:42:07 -0500 |
commit | 643e33711781fb5a2a3ffc1b8b4b0031bf9509a1 (patch) | |
tree | 59b3f668a8e06b399dbdf5348948914c6b8ecb15 /include | |
parent | e078309c096fd5091df3006775db56e2a1c62e8b (diff) |
Añadido código de las expresiones.
Diffstat (limited to 'include')
-rw-r--r-- | include/expressions.hpp | 41 |
1 files changed, 24 insertions, 17 deletions
diff --git a/include/expressions.hpp b/include/expressions.hpp index 5d8ed03..908272f 100644 --- a/include/expressions.hpp +++ b/include/expressions.hpp @@ -3,6 +3,7 @@ * Luis Sebastián Martínez Vega - LCC */ #include <string> +#include "lexer.hpp" #ifndef EXPRESSIONS_H #define EXPRESSIONS_H @@ -19,79 +20,85 @@ class Expression { private: Expression *left; Expression *right; - std::string repr; - void setRepr(); - void delTree(); + token_type type; public: - Expression(Expression *left, Expression *right); + Expression(Expression *left, Expression *right, token_type type); virtual ~Expression() = 0; std::string getRepr(); - Expression *getLeft(); - Expression *getRight(); + const Expression *getLeft(); + const Expression *getRight(); +protected: + virtual void setRepr(); + void delTree(); + std::string repr{}; }; class Literal : public Expression { private: int value; public: - Literal(); + Literal(int value); ~Literal(); int getValue(); + void setRepr() override; }; class Function : public Expression { private: trig_functions function_name; + Expression *arg; public: - Function(); + Function(Expression *arg, trig_functions name); ~Function(); trig_functions getFunctionName(); + void setRepr() override; +protected: + void delTree(); }; class Variable : public Expression { private: char name; public: - Variable(); + Variable(char name); ~Variable(); - char getName(); + void setRepr() override; }; class AddExpression : public Expression { public: - AddExpression(); + AddExpression(Expression *left, Expression *right); ~AddExpression(); }; class SubExpression : public Expression { public: - SubExpression(); + SubExpression(Expression *left, Expression *right); ~SubExpression(); }; class NegationExpression : public Expression { public: - NegationExpression(); + NegationExpression(Expression *right); ~NegationExpression(); }; class DivisionExpression : public Expression { public: - DivisionExpression(); + DivisionExpression(Expression *left, Expression *right); ~DivisionExpression(); }; class MultiplicationExpression : public Expression { public: - MultiplicationExpression(); + MultiplicationExpression(Expression *left, Expression *right); ~MultiplicationExpression(); }; class PowerExpression : public Expression { public: - PowerExpression(); + PowerExpression(Expression *left, Expression *right); ~PowerExpression(); }; - #endif /* EXPRESSIONS_H */ |