aboutsummaryrefslogtreecommitdiffstats
path: root/c_compiler/include/bindings.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'c_compiler/include/bindings.hpp')
-rw-r--r--c_compiler/include/bindings.hpp60
1 files changed, 30 insertions, 30 deletions
diff --git a/c_compiler/include/bindings.hpp b/c_compiler/include/bindings.hpp
index a8d8eba..7c2a264 100644
--- a/c_compiler/include/bindings.hpp
+++ b/c_compiler/include/bindings.hpp
@@ -13,50 +13,50 @@ typedef std::shared_ptr<Type> TypePtr;
// struct containing information on the variable declaration
struct DeclarationData
{
- TypePtr type;
- int stack_position;
- std::vector<int> array_sizes;
+ TypePtr type;
+ int stack_position;
+ std::vector<int> array_sizes;
};
// stores bindings for the current scope and where they are in the stack
class Bindings
{
private:
- static std::vector<std::string> string_literals;
+ static std::vector<std::string> string_literals;
- std::unordered_map<std::string, DeclarationData> bindings_;
- std::string break_label_;
- std::string continue_label_;
- int stack_counter_;
- int expression_stack_;
+ std::unordered_map<std::string, DeclarationData> bindings_;
+ std::string break_label_;
+ std::string continue_label_;
+ int stack_counter_;
+ int expression_stack_;
public:
- Bindings();
+ Bindings();
- void insertBinding(const std::string &id, const TypePtr &type, const int &stack_position);
- void insertBinding(const std::string &id, const TypePtr &type, const int &stack_position, const std::vector<int> array_sizes);
- int insertStringLiteral(const std::string &string_literal);
- void increaseStackPosition();
- void increaseStackPosition(const int &position);
- void setStackPosition(const int &stack_counter);
- void nextExpressionStackPosition();
- void setExpressionStackPosition(const int &stack_counter);
+ void insertBinding(const std::string &id, const TypePtr &type, const int &stack_position);
+ void insertBinding(const std::string &id, const TypePtr &type, const int &stack_position, const std::vector<int> array_sizes);
+ int insertStringLiteral(const std::string &string_literal);
+ void increaseStackPosition();
+ void increaseStackPosition(const int &position);
+ void setStackPosition(const int &stack_counter);
+ void nextExpressionStackPosition();
+ void setExpressionStackPosition(const int &stack_counter);
- TypePtr getType(const std::string &id) const;
- const std::vector<int> &getArraySizes(const std::string &id) const;
+ TypePtr getType(const std::string &id) const;
+ const std::vector<int> &getArraySizes(const std::string &id) const;
- std::string breakLabel();
- std::string breakLabel(const std::string &label);
- std::string continueLabel();
- std::string continueLabel(const std::string &label);
+ std::string breakLabel();
+ std::string breakLabel(const std::string &label);
+ std::string continueLabel();
+ std::string continueLabel(const std::string &label);
- int currentStackPosition() const;
- int stackPosition(const std::string &id) const;
- int currentExpressionStackPosition() const;
+ int currentStackPosition() const;
+ int stackPosition(const std::string &id) const;
+ int currentExpressionStackPosition() const;
- std::pair<std::vector<std::string>::const_iterator, std::vector<std::string>::const_iterator>
- getStringLiteralIterator() const;
+ std::pair<std::vector<std::string>::const_iterator, std::vector<std::string>::const_iterator>
+ getStringLiteralIterator() const;
- bool bindingExists(const std::string &id) const;
+ bool bindingExists(const std::string &id) const;
};