summaryrefslogtreecommitdiff
path: root/include/expressions.hpp
diff options
context:
space:
mode:
authorHombreLaser <sebastian-440@live.com>2022-04-17 11:14:38 -0500
committerHombreLaser <sebastian-440@live.com>2022-04-17 11:14:38 -0500
commit3f9e0da725963bb27aeccf852bf342a9cce2a34b (patch)
tree9bd646536d93f9f357a4e99eca3b9fff4ae340b6 /include/expressions.hpp
parent4a2d657cc5bf8ea685a0daaec803363bc2c7822c (diff)
Añadido código de las reglas, solucionado errores.
Diffstat (limited to 'include/expressions.hpp')
-rw-r--r--include/expressions.hpp13
1 files changed, 11 insertions, 2 deletions
diff --git a/include/expressions.hpp b/include/expressions.hpp
index 3191436..a293408 100644
--- a/include/expressions.hpp
+++ b/include/expressions.hpp
@@ -23,14 +23,14 @@ enum trig_functions {
i_ctg
};
-class Differentiator; // Forward declaration.
+class Differentiator; // Forward declaration
class Expression {
public:
Expression(Expression *left, Expression *right, token_type type);
virtual ~Expression() = default;
std::string getRepr();
- Expression *diff(const Differentiator *d);
+ virtual Expression *diff(const Differentiator *d) = 0;
Expression *getLeft();
Expression *getRight();
virtual float eval(int arg) = 0;
@@ -52,6 +52,7 @@ public:
~Literal();
int getValue();
float eval(int arg) override;
+ Expression *diff(const Differentiator *d) override;
Expression *copy() override;
protected:
void setRepr() override;
@@ -66,6 +67,7 @@ public:
~Function();
Expression *getArg();
float eval(int arg) override;
+ Expression *diff(const Differentiator *d) override;
trig_functions getFunctionName() const;
Expression *copy() override;
protected:
@@ -80,6 +82,7 @@ public:
explicit Variable(char name);
~Variable();
float eval(int arg) override;
+ Expression *diff(const Differentiator *d) override;
Expression *copy() override;
protected:
void setRepr() override;
@@ -90,6 +93,7 @@ public:
AddExpression(Expression *left, Expression *right);
~AddExpression();
float eval(int arg) override;
+ Expression *diff(const Differentiator *d) override;
Expression *copy() override;
};
@@ -99,6 +103,7 @@ public:
~SubExpression();
float eval(int arg) override;
Expression *copy() override;
+ Expression *diff(const Differentiator *d) override;
};
class NegationExpression : public Expression {
@@ -107,6 +112,7 @@ public:
~NegationExpression();
float eval(int arg) override;
Expression *copy() override;
+ Expression *diff(const Differentiator *d) override;
protected:
void setRepr() override;
};
@@ -117,6 +123,7 @@ public:
~DivisionExpression();
float eval(int arg) override;
Expression *copy() override;
+ Expression *diff(const Differentiator *d) override;
};
class MultiplicationExpression : public Expression {
@@ -125,6 +132,7 @@ public:
~MultiplicationExpression();
float eval(int arg) override;
Expression *copy() override;
+ Expression *diff(const Differentiator *d) override;
};
class PowerExpression : public Expression {
@@ -133,6 +141,7 @@ public:
~PowerExpression();
float eval(int arg) override;
Expression *copy() override;
+ Expression *diff(const Differentiator *d) override;
};
#endif /* EXPRESSIONS_H */