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 /expressions.cpp | |
parent | e078309c096fd5091df3006775db56e2a1c62e8b (diff) |
Añadido código de las expresiones.
Diffstat (limited to 'expressions.cpp')
-rw-r--r-- | expressions.cpp | 132 |
1 files changed, 132 insertions, 0 deletions
diff --git a/expressions.cpp b/expressions.cpp new file mode 100644 index 0000000..e402020 --- /dev/null +++ b/expressions.cpp @@ -0,0 +1,132 @@ +#include <cstddef> +#include <string> +#include "include/lexer.hpp" +#include "include/expressions.hpp" + +using std::string, std::to_string; + +// Literal +Literal::Literal(int value) : Expression(NULL, NULL, number) { + this->value = value; +} + +Literal::~Literal() { + delTree(); +} + +void Literal::setRepr() { + repr = to_string(value); +} + +// Function. +Function::Function(Expression *arg, trig_functions name) : Expression(NULL, NULL, function) { + this->arg = arg; + function_name = name; +} + +Function::~Function() { + delTree(); +} + +trig_functions Function::getFunctionName() { return function_name; } + +void Function::delTree() { + delete arg; + delete this; +} + +void Function::setRepr() { + switch(function_name) { + case sin: + repr += "sin"; + + break; + case cos: + repr += "cos"; + + break; + case tan: + repr += "tan"; + + break; + case csc: + repr += "csc"; + + break; + case sec: + repr += "sec"; + + break; + case ctg: + repr += "ctg"; + + break; + } + + repr += '('; + repr += arg->getRepr(); + repr += ')'; +} + +// Variable. +Variable::Variable(char name) : Expression(NULL, NULL, variable) { + this->name = name; + setRepr(); +} + +Variable::~Variable() { + delTree(); +} + +void Variable::setRepr() { + repr += name; +} + +// Sum. +AddExpression::AddExpression(Expression *left, Expression *right) + : Expression(left, right, sum) {} + +AddExpression::~AddExpression() { + delTree(); +} + +// Substraction. +SubExpression::SubExpression(Expression *left, Expression *right) + : Expression(left, right, substraction) {} + +SubExpression::~SubExpression() { + delTree(); +} + +// Negation. +NegationExpression::NegationExpression(Expression *right) + : Expression(NULL, right, substraction) {} + +NegationExpression::~NegationExpression() { + delTree(); +} + +// División. +DivisionExpression::DivisionExpression(Expression *left, Expression *right) + : Expression(left, right, division) {} + +DivisionExpression::~DivisionExpression() { + delTree(); +} + +// Multiplication. +MultiplicationExpression::MultiplicationExpression(Expression *left, + Expression *right) + : Expression(left, right, multiplication) {} + +MultiplicationExpression::~MultiplicationExpression() { + delTree(); +} + +// Power. +PowerExpression::PowerExpression(Expression *left, Expression *right) + : Expression(left, right, power) {} + +PowerExpression::~PowerExpression() { + delTree(); +} |