summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorHombreLaser <sebastian-440@live.com>2022-04-03 16:42:07 -0500
committerHombreLaser <sebastian-440@live.com>2022-04-03 16:42:07 -0500
commit643e33711781fb5a2a3ffc1b8b4b0031bf9509a1 (patch)
tree59b3f668a8e06b399dbdf5348948914c6b8ecb15 /include
parente078309c096fd5091df3006775db56e2a1c62e8b (diff)
Añadido código de las expresiones.
Diffstat (limited to 'include')
-rw-r--r--include/expressions.hpp41
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 */