aboutsummaryrefslogtreecommitdiffstats
path: root/c_compiler/include
diff options
context:
space:
mode:
authorYann Herklotz <ymherklotz@gmail.com>2017-03-17 22:38:08 +0000
committerYann Herklotz <ymherklotz@gmail.com>2017-03-17 22:38:08 +0000
commita9663b327230e08a6bc5cfe4f20ed8d066f33338 (patch)
tree4a47654b4fd29300ebee876fa1d9f79dac52499f /c_compiler/include
parentf35548ee7d4c54558c38d63df7e2572150c28d22 (diff)
downloadCompiler-a9663b327230e08a6bc5cfe4f20ed8d066f33338.tar.gz
Compiler-a9663b327230e08a6bc5cfe4f20ed8d066f33338.zip
Creating if statement
Diffstat (limited to 'c_compiler/include')
-rw-r--r--c_compiler/include/expression.hpp10
-rw-r--r--c_compiler/include/statement.hpp3
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;