diff options
Diffstat (limited to 'c_compiler/include')
-rw-r--r-- | c_compiler/include/bindings.hpp | 1 | ||||
-rw-r--r-- | c_compiler/include/expression.hpp | 2 | ||||
-rw-r--r-- | c_compiler/include/statement.hpp | 16 |
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 |