From e078309c096fd5091df3006775db56e2a1c62e8b Mon Sep 17 00:00:00 2001 From: HombreLaser Date: Sun, 3 Apr 2022 11:55:46 -0500 Subject: Preparado código para las expresiones MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/expressions.hpp | 97 +++++++++++++++++++++++++++++++++++++++++++++++++ include/lexer.hpp | 9 ----- 2 files changed, 97 insertions(+), 9 deletions(-) create mode 100644 include/expressions.hpp 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 +#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, -- cgit v1.2.3