summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/differentiator.hpp1
-rw-r--r--include/simplifier.hpp26
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 */