diff options
author | HombreLaser <sebastian-440@live.com> | 2022-04-20 22:29:22 -0500 |
---|---|---|
committer | HombreLaser <sebastian-440@live.com> | 2022-04-20 22:29:22 -0500 |
commit | 65f4fa37ee19e0a0d7edd6533e11346a0b8f67af (patch) | |
tree | 18878adaface22bc342e905438871b63dc1f9ffe /include | |
parent | 3f9e0da725963bb27aeccf852bf342a9cce2a34b (diff) |
Corregidos errores y preparado simplificador
Diffstat (limited to 'include')
-rw-r--r-- | include/differentiator.hpp | 1 | ||||
-rw-r--r-- | include/simplifier.hpp | 26 |
2 files changed, 26 insertions, 1 deletions
diff --git a/include/differentiator.hpp b/include/differentiator.hpp index cef5211..7291664 100644 --- a/include/differentiator.hpp +++ b/include/differentiator.hpp @@ -4,7 +4,6 @@ #ifndef DIFFERENTIATOR_H #define DIFFERENTIATOR_H -#include <string> #include "expressions.hpp" diff --git a/include/simplifier.hpp b/include/simplifier.hpp new file mode 100644 index 0000000..8bc363d --- /dev/null +++ b/include/simplifier.hpp @@ -0,0 +1,26 @@ +#ifndef SIMPLIFIER_H +#define SIMPLIFIER_H +#include "expressions.hpp" + +class Simplifier { +private: + void simplifyChildren(Expression *root, Expression *left, Expression *right); + Expression *ruleMultiplyByOne(MultiplicationExpression *expr); + Expression *ruleDivideByOne(DivisionExpression *expr); + Expression *ruleMultiplyByZero(MultiplicationExpression *expr); + Expression *ruleZeroDivision(DivisionExpression *expr); + Expression *ruleOnePower(PowerExpression *expr); + Expression *ruleZeroPower(PowerExpression *expr); +public: + Expression *visit(Variable *expr); + Expression *visit(Literal *expr); + Expression *visit(Function *expr); + Expression *visit(NegationExpression *expr); + Expression *visit(AddExpression *expr); + Expression *visit(SubExpression *expr); + Expression *visit(MultiplicationExpression *expr); + Expression *visit(DivisionExpression *expr); + Expression *visit(PowerExpression *expr); +}; + +#endif /* SIMPLIFIER_H */ |