aboutsummaryrefslogtreecommitdiffstats
path: root/c_compiler/include/expression.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'c_compiler/include/expression.hpp')
-rw-r--r--c_compiler/include/expression.hpp18
1 files changed, 17 insertions, 1 deletions
diff --git a/c_compiler/include/expression.hpp b/c_compiler/include/expression.hpp
index c784de7..6bade38 100644
--- a/c_compiler/include/expression.hpp
+++ b/c_compiler/include/expression.hpp
@@ -14,7 +14,7 @@ typedef std::shared_ptr<Expression> ExpressionPtr;
class Expression : public Node
{
-private:
+protected:
ExpressionPtr next_expression_;
public:
@@ -74,6 +74,8 @@ public:
virtual void expressionDepth(int &depth_count) const;
virtual void stackPosition(Bindings bindings, int &depth_count) const;
virtual TypePtr getType(const Bindings &bindings) const;
+
+ ExpressionPtr getIndex() const;
};
class PostfixFunctionCall : public UnaryExpression
@@ -312,4 +314,18 @@ public:
virtual TypePtr getType(const Bindings &bindings) const;
};
+class Initializer : public Expression
+{
+private:
+ ExpressionPtr next_initializer_;
+public:
+ Initializer(Expression *next_initializer);
+
+ virtual Bindings printAsm(Bindings bindings, int &label_count) const;
+ virtual TypePtr getType(const Bindings &bindings) const;
+
+ void printInitializerAsm(Bindings &bindings, int &label_count, int position, const std::vector<int> &iteration_vector, const TypePtr &type) const;
+ ExpressionPtr getNext() const;
+};
+
#endif