summaryrefslogtreecommitdiff
path: root/include/simplifier.hpp
diff options
context:
space:
mode:
authorHombreLaser <sebastian-440@live.com>2022-04-20 22:29:22 -0500
committerHombreLaser <sebastian-440@live.com>2022-04-20 22:29:22 -0500
commit65f4fa37ee19e0a0d7edd6533e11346a0b8f67af (patch)
tree18878adaface22bc342e905438871b63dc1f9ffe /include/simplifier.hpp
parent3f9e0da725963bb27aeccf852bf342a9cce2a34b (diff)
Corregidos errores y preparado simplificador
Diffstat (limited to 'include/simplifier.hpp')
-rw-r--r--include/simplifier.hpp26
1 files changed, 26 insertions, 0 deletions
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 */