diff options
Diffstat (limited to 'c_compiler/include')
-rw-r--r-- | c_compiler/include/expression.hpp | 10 | ||||
-rw-r--r-- | c_compiler/include/statement.hpp | 3 |
2 files changed, 10 insertions, 3 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; }; diff --git a/c_compiler/include/statement.hpp b/c_compiler/include/statement.hpp index fe0597c..fe509c2 100644 --- a/c_compiler/include/statement.hpp +++ b/c_compiler/include/statement.hpp @@ -51,10 +51,11 @@ public: class SelectionStatement : public Statement { protected: + ExpressionPtr condition_; StatementPtr if_; StatementPtr else_; public: - SelectionStatement(Statement* _if = nullptr, Statement* _else = nullptr); + SelectionStatement(Expression* condition, Statement* _if, Statement* _else = nullptr); virtual void print() const; virtual void printXml() const; |