aboutsummaryrefslogtreecommitdiffstats
path: root/c_compiler/include/expression.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'c_compiler/include/expression.hpp')
-rw-r--r--c_compiler/include/expression.hpp13
1 files changed, 8 insertions, 5 deletions
diff --git a/c_compiler/include/expression.hpp b/c_compiler/include/expression.hpp
index 89a996e..df95a1e 100644
--- a/c_compiler/include/expression.hpp
+++ b/c_compiler/include/expression.hpp
@@ -3,12 +3,16 @@
#include "node.hpp"
+#include <memory>
+
+class Expression;
+
+typedef std::shared_ptr<Expression> ExpressionPtr;
+
class Expression : public Node
{
public:
- virtual ~Expression();
-
virtual VariableStackBindings printasm(VariableStackBindings bindings) const = 0;
virtual void print() const;
@@ -20,11 +24,10 @@ public:
class OperationExpression : public Expression
{
protected:
- Expression* lhs;
- Expression* rhs;
+ ExpressionPtr lhs;
+ ExpressionPtr rhs;
public:
OperationExpression(Expression* _lhs, Expression* _rhs);
- virtual ~OperationExpression();
virtual VariableStackBindings printasm(VariableStackBindings bindings) const = 0;
};