aboutsummaryrefslogtreecommitdiffstats
path: root/c_compiler/include
diff options
context:
space:
mode:
Diffstat (limited to 'c_compiler/include')
-rw-r--r--c_compiler/include/bindings.hpp1
-rw-r--r--c_compiler/include/expression.hpp2
-rw-r--r--c_compiler/include/statement.hpp16
3 files changed, 14 insertions, 5 deletions
diff --git a/c_compiler/include/bindings.hpp b/c_compiler/include/bindings.hpp
index 1104bb8..0afb3e9 100644
--- a/c_compiler/include/bindings.hpp
+++ b/c_compiler/include/bindings.hpp
@@ -33,6 +33,7 @@ public:
void increaseStackPosition();
void setStackPosition(int stack_counter);
void nextExpressionStackPosition();
+ void setExpressionStackPosition(const int& stack_counter);
int currentStackPosition() const;
int stackPosition(const std::string& id) const;
diff --git a/c_compiler/include/expression.hpp b/c_compiler/include/expression.hpp
index 9a22ce7..313d678 100644
--- a/c_compiler/include/expression.hpp
+++ b/c_compiler/include/expression.hpp
@@ -25,6 +25,7 @@ public:
virtual void print() const;
virtual void printXml() const;
virtual void countArguments(unsigned& argument_count) const;
+ virtual void expressionDepth(unsigned& depth_count) const;
virtual int postfixStackPosition(VariableStackBindings bindings) const;
virtual void setPostfixExpression(Expression* postfix_expression);
@@ -46,6 +47,7 @@ public:
virtual VariableStackBindings printAsm(VariableStackBindings bindings, unsigned& label_count) const = 0;
+ virtual void expressionDepth(unsigned& depth_count) const;
void evaluateExpression(VariableStackBindings bindings, unsigned& label_count) const;
};
diff --git a/c_compiler/include/statement.hpp b/c_compiler/include/statement.hpp
index 121db2c..887ffc5 100644
--- a/c_compiler/include/statement.hpp
+++ b/c_compiler/include/statement.hpp
@@ -27,6 +27,7 @@ public:
virtual void countVariables(unsigned& var_count) const = 0;
virtual void countArguments(unsigned& argument_count) const = 0;
+ virtual void countExpressionDepth(unsigned& depth_count) const = 0;
void linkStatement(Statement* next);
};
@@ -47,7 +48,8 @@ public:
virtual VariableStackBindings printAsm(VariableStackBindings bindings, unsigned& label_count) const;
virtual void countVariables(unsigned& var_count) const;
- virtual void countArguments(unsigned& argument_count) const;
+ virtual void countArguments(unsigned& argument_count) const;
+ virtual void countExpressionDepth(unsigned& depth_count) const;
};
@@ -65,7 +67,8 @@ public:
virtual VariableStackBindings printAsm(VariableStackBindings bindings, unsigned& label_count) const;
virtual void countVariables(unsigned& var_count) const;
- virtual void countArguments(unsigned& argument_count) const;
+ virtual void countArguments(unsigned& argument_count) const;
+ virtual void countExpressionDepth(unsigned& depth_count) const;
};
@@ -81,7 +84,8 @@ public:
virtual VariableStackBindings printAsm(VariableStackBindings bindings, unsigned& label_count) const;
virtual void countVariables(unsigned& var_count) const;
- virtual void countArguments(unsigned& argument_count) const;
+ virtual void countArguments(unsigned& argument_count) const;
+ virtual void countExpressionDepth(unsigned& depth_count) const;
};
@@ -98,6 +102,7 @@ public:
virtual void countVariables(unsigned& var_count) const;
virtual void countArguments(unsigned& argument_count) const;
+ virtual void countExpressionDepth(unsigned& depth_count) const;
};
@@ -114,7 +119,8 @@ public:
virtual VariableStackBindings printAsm(VariableStackBindings bindings, unsigned& label_count) const = 0;
virtual void countVariables(unsigned& var_count) const;
- virtual void countArguments(unsigned& argument_count) const;
+ virtual void countArguments(unsigned& argument_count) const;
+ virtual void countExpressionDepth(unsigned& depth_count) const;
};
class WhileLoop : public IterationStatement
@@ -122,7 +128,7 @@ class WhileLoop : public IterationStatement
public:
WhileLoop(Expression* condition, Statement* statement);
- virtual VariableStackBindings printAsm(VariableStackBindings bindings, unsigned& label_cout) const;
+ virtual VariableStackBindings printAsm(VariableStackBindings bindings, unsigned& label_count) const;
};
class ForLoop : public IterationStatement