diff options
author | Yann Herklotz <ymherklotz@gmail.com> | 2017-03-17 22:38:08 +0000 |
---|---|---|
committer | Yann Herklotz <ymherklotz@gmail.com> | 2017-03-17 22:38:08 +0000 |
commit | a9663b327230e08a6bc5cfe4f20ed8d066f33338 (patch) | |
tree | 4a47654b4fd29300ebee876fa1d9f79dac52499f /c_compiler/include | |
parent | f35548ee7d4c54558c38d63df7e2572150c28d22 (diff) | |
download | Compiler-a9663b327230e08a6bc5cfe4f20ed8d066f33338.tar.gz Compiler-a9663b327230e08a6bc5cfe4f20ed8d066f33338.zip |
Creating if statement
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; |