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.hpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/c_compiler/include/expression.hpp b/c_compiler/include/expression.hpp
index 19d2c4f..9a22ce7 100644
--- a/c_compiler/include/expression.hpp
+++ b/c_compiler/include/expression.hpp
@@ -45,6 +45,8 @@ public:
OperationExpression(Expression* lhs, Expression* rhs);
virtual VariableStackBindings printAsm(VariableStackBindings bindings, unsigned& label_count) const = 0;
+
+ void evaluateExpression(VariableStackBindings bindings, unsigned& label_count) const;
};
@@ -130,8 +132,10 @@ public:
class ShiftExpression : public OperationExpression
{
+private:
+ std::string operator_;
public:
- ShiftExpression(Expression* lhs, Expression* rhs);
+ ShiftExpression(Expression* lhs, const std::string& _operator, Expression* rhs);
virtual VariableStackBindings printAsm(VariableStackBindings bindings, unsigned& label_count) const;
};
@@ -139,8 +143,10 @@ public:
class RelationalExpression : public OperationExpression
{
+private:
+ std::string operator_;
public:
- RelationalExpression(Expression* lhs, Expression* rhs);
+ RelationalExpression(Expression* lhs, const std::string& _operator, Expression* rhs);
virtual VariableStackBindings printAsm(VariableStackBindings bindings, unsigned& label_count) const;
};