diff options
Diffstat (limited to 'c_compiler/include')
-rw-r--r-- | c_compiler/include/bindings.hpp | 19 | ||||
-rw-r--r-- | c_compiler/include/declaration.hpp | 22 | ||||
-rw-r--r-- | c_compiler/include/expression.hpp | 43 | ||||
-rw-r--r-- | c_compiler/include/function.hpp | 19 | ||||
-rw-r--r-- | c_compiler/include/node.hpp | 4 | ||||
-rw-r--r-- | c_compiler/include/statement.hpp | 61 | ||||
-rw-r--r-- | c_compiler/include/translation_unit.hpp | 11 | ||||
-rw-r--r-- | c_compiler/include/type.hpp | 16 |
8 files changed, 103 insertions, 92 deletions
diff --git a/c_compiler/include/bindings.hpp b/c_compiler/include/bindings.hpp index 5dd1e1f..512e426 100644 --- a/c_compiler/include/bindings.hpp +++ b/c_compiler/include/bindings.hpp @@ -1,7 +1,6 @@ #ifndef BINDINGS_HPP #define BINDINGS_HPP -#include <cstdint> #include <map> #include <memory> #include <string> @@ -15,7 +14,7 @@ typedef std::shared_ptr<Type> TypePtr; struct DeclarationData { TypePtr type; - int32_t stack_position; + int stack_position; }; @@ -23,22 +22,22 @@ struct DeclarationData class VariableStackBindings { private: - std::map<std::string, DeclarationData> bindings; - int32_t stack_counter; - int8_t current_register; + std::map<std::string, DeclarationData> bindings_; + int stack_counter_; + unsigned expression_stack_; public: VariableStackBindings(); void insertBinding(std::string id, TypePtr type, int32_t stack_position); void increaseStackPosition(); - void resetRegister(); - void increaseRegister(); + void resetExpressionStack(); + void nextExpressionStackPosition(); - int32_t getCurrentStackPosition() const; - int32_t getStackPosition(const std::string& id) const; + int currentStackPosition() const; + int stackPosition(const std::string& id) const; - int8_t getCurrentRegister() const; + unsigned currentExpressionStackPosition() const; bool bindingExists(const std::string& id) const; }; diff --git a/c_compiler/include/declaration.hpp b/c_compiler/include/declaration.hpp index 08fd641..4fe754a 100644 --- a/c_compiler/include/declaration.hpp +++ b/c_compiler/include/declaration.hpp @@ -16,23 +16,23 @@ typedef std::shared_ptr<Declaration> DeclarationPtr; class Declaration : public Node { private: - TypePtr type; - std::string id; - ExpressionPtr init; - DeclarationPtr next_decl; - DeclarationPtr list_next_decl; + TypePtr type_; + std::string id_; + ExpressionPtr initializer_; + DeclarationPtr next_declaration_; + DeclarationPtr next_list_declaration_; public: - Declaration(const std::string& _id = "", Expression* _init = nullptr); + Declaration(const std::string& id = "", Expression* initializer = nullptr); virtual void print() const; - virtual void printxml() const; - virtual VariableStackBindings printasm(VariableStackBindings bindings) const; + virtual void printXml() const; + virtual VariableStackBindings printAsm(VariableStackBindings bindings) const; - void addDeclaration(Declaration* _next_decl); - void addList(Declaration* _next_decl); + void linkDeclaration(Declaration* next_declaration); + void linkListDeclaration(Declaration* next_list_declaration); - void setType(Type* _type); + void setType(Type* type); DeclarationPtr getNext() const; DeclarationPtr getNextListItem() const; diff --git a/c_compiler/include/expression.hpp b/c_compiler/include/expression.hpp index a4939a9..ae186d1 100644 --- a/c_compiler/include/expression.hpp +++ b/c_compiler/include/expression.hpp @@ -2,8 +2,11 @@ #define AST_EXPRESSION_HPP #include "node.hpp" +#include "bindings.hpp" +#include <cstdint> #include <memory> +#include <string> class Expression; @@ -13,79 +16,79 @@ typedef std::shared_ptr<Expression> ExpressionPtr; class Expression : public Node { public: - virtual VariableStackBindings printasm(VariableStackBindings bindings) const = 0; + virtual VariableStackBindings printAsm(VariableStackBindings bindings) const = 0; virtual void print() const; - virtual void printxml() const; - virtual int32_t getPostfixStackPosition(VariableStackBindings bindings) const; + virtual void printXml() const; + virtual int postfixStackPosition(VariableStackBindings bindings) const; }; class OperationExpression : public Expression { protected: - ExpressionPtr lhs; - ExpressionPtr rhs; + ExpressionPtr lhs_; + ExpressionPtr rhs_; public: - OperationExpression(Expression* _lhs, Expression* _rhs); + OperationExpression(Expression* lhs, Expression* rhs); - virtual VariableStackBindings printasm(VariableStackBindings bindings) const = 0; + virtual VariableStackBindings printAsm(VariableStackBindings bindings) const = 0; }; class AssignmentExpression : public OperationExpression { public: - AssignmentExpression(Expression* _lhs, Expression* _rhs); + AssignmentExpression(Expression* lhs, Expression* rhs); - virtual VariableStackBindings printasm(VariableStackBindings bindings) const; + virtual VariableStackBindings printAsm(VariableStackBindings bindings) const; }; class AdditiveExpression : public OperationExpression { private: - std::string operation; + std::string operation_; public: - AdditiveExpression(Expression* _lhs, const std::string& _operation, Expression* _rhs); + AdditiveExpression(Expression* lhs, const std::string& operation, Expression* rhs); - virtual VariableStackBindings printasm(VariableStackBindings bindings) const; + virtual VariableStackBindings printAsm(VariableStackBindings bindings) const; }; class MultiplicativeExpression : public OperationExpression { private: - std::string operation; + std::string operation_; public: - MultiplicativeExpression(Expression* _lhs, const std::string& _operation, Expression* _rhs); + MultiplicativeExpression(Expression* lhs, const std::string& operation, Expression* rhs); - virtual VariableStackBindings printasm(VariableStackBindings bindings) const; + virtual VariableStackBindings printAsm(VariableStackBindings bindings) const; }; class Identifier : public Expression { private: - std::string m_id; + std::string id_; public: Identifier(const std::string& id); - virtual VariableStackBindings printasm(VariableStackBindings bindings) const; - virtual int32_t getPostfixStackPosition(VariableStackBindings bindings) const; + virtual VariableStackBindings printAsm(VariableStackBindings bindings) const; + virtual int postfixStackPosition(VariableStackBindings bindings) const; }; class Constant : public Expression { private: - int32_t m_constant; + int32_t constant_; public: Constant(const int32_t& constant); - virtual VariableStackBindings printasm(VariableStackBindings bindings) const; + virtual VariableStackBindings printAsm(VariableStackBindings bindings) const; }; diff --git a/c_compiler/include/function.hpp b/c_compiler/include/function.hpp index 57e0ac1..dc8640e 100644 --- a/c_compiler/include/function.hpp +++ b/c_compiler/include/function.hpp @@ -1,9 +1,14 @@ #ifndef AST_FUNCTION_HPP #define AST_FUNCTION_HPP +#include "bindings.hpp" +#include "declaration.hpp" #include "node.hpp" +#include "statement.hpp" +#include "type.hpp" #include <memory> +#include <string> class Declaration; class Statement; @@ -18,17 +23,17 @@ typedef std::shared_ptr<Function> FunctionPtr; class Function : public Node { protected: - TypePtr type; - std::string id; - DeclarationPtr parameter_list; - StatementPtr statement; + TypePtr type_; + std::string id_; + DeclarationPtr parameter_list_; + StatementPtr statement_; public: - Function(const std::string& _id, Declaration* _parameter_list, Statement* _statement); + Function(const std::string& id, Declaration* parameter_list, Statement* statement); virtual void print() const; - virtual void printxml() const; - virtual VariableStackBindings printasm(VariableStackBindings bindings) const; + virtual void printXml() const; + virtual VariableStackBindings printAsm(VariableStackBindings bindings) const; }; diff --git a/c_compiler/include/node.hpp b/c_compiler/include/node.hpp index e14a711..f27c804 100644 --- a/c_compiler/include/node.hpp +++ b/c_compiler/include/node.hpp @@ -16,8 +16,8 @@ public: virtual ~Node() {} virtual void print() const = 0; - virtual void printxml() const = 0; - virtual VariableStackBindings printasm(VariableStackBindings bindings) const = 0; + virtual void printXml() const = 0; + virtual VariableStackBindings printAsm(VariableStackBindings bindings) const = 0; }; diff --git a/c_compiler/include/statement.hpp b/c_compiler/include/statement.hpp index d491b68..76d9303 100644 --- a/c_compiler/include/statement.hpp +++ b/c_compiler/include/statement.hpp @@ -1,12 +1,13 @@ #ifndef AST_STATEMENT_HPP #define AST_STATEMENT_HPP +#include "bindings.hpp" +#include "declaration.hpp" +#include "expression.hpp" #include "node.hpp" #include <memory> -class Declaration; -class Expression; class Statement; typedef std::shared_ptr<Declaration> DeclarationPtr; @@ -16,92 +17,92 @@ typedef std::shared_ptr<Statement> StatementPtr; class Statement : public Node { protected: - StatementPtr next_statement; + StatementPtr next_statement_; public: Statement(Statement* statement = nullptr); virtual void print() const = 0; - virtual void printxml() const = 0; - virtual VariableStackBindings printasm(VariableStackBindings bindings) const = 0; + virtual void printXml() const = 0; + virtual VariableStackBindings printAsm(VariableStackBindings bindings) const = 0; - virtual void count_variables(int32_t& var_count) const = 0; + virtual void countVariables(unsigned& var_count) const = 0; - void addStatement(Statement* _next); + void linkStatement(Statement* next); }; class CompoundStatement : public Statement { protected: - DeclarationPtr m_decl; - StatementPtr m_statement; + DeclarationPtr declaration_; + StatementPtr statement_; public: - CompoundStatement(Declaration* decl = nullptr, Statement* statement = nullptr); + CompoundStatement(Declaration* declaration = nullptr, Statement* statement = nullptr); CompoundStatement(Statement* statement); virtual void print() const; - virtual void printxml() const; - virtual VariableStackBindings printasm(VariableStackBindings bindings) const; + virtual void printXml() const; + virtual VariableStackBindings printAsm(VariableStackBindings bindings) const; - virtual void count_variables(int32_t& var_count) const; + virtual void countVariables(unsigned& var_count) const; }; class SelectionStatement : public Statement { protected: - StatementPtr m_if; - StatementPtr m_else; + StatementPtr if_; + StatementPtr else_; public: SelectionStatement(Statement* _if = nullptr, Statement* _else = nullptr); virtual void print() const; - virtual void printxml() const; - virtual VariableStackBindings printasm(VariableStackBindings bindings) const; + virtual void printXml() const; + virtual VariableStackBindings printAsm(VariableStackBindings bindings) const; - virtual void count_variables(int32_t& var_count) const; + virtual void countVariables(unsigned& var_count) const; }; class ExpressionStatement : public Statement { protected: - ExpressionPtr m_expr; + ExpressionPtr expr_; public: ExpressionStatement(Expression* expr = nullptr); virtual void print() const; - virtual void printxml() const; - virtual VariableStackBindings printasm(VariableStackBindings bindings) const; + virtual void printXml() const; + virtual VariableStackBindings printAsm(VariableStackBindings bindings) const; - virtual void count_variables(int32_t& var_count) const; + virtual void countVariables(unsigned& var_count) const; }; class JumpStatement : public Statement { protected: - ExpressionPtr m_expr; + ExpressionPtr expr_; public: JumpStatement(Expression* expr = nullptr); virtual void print() const; - virtual void printxml() const; - virtual VariableStackBindings printasm(VariableStackBindings bindings) const; + virtual void printXml() const; + virtual VariableStackBindings printAsm(VariableStackBindings bindings) const; - virtual void count_variables(int32_t& var_count) const; + virtual void countVariables(unsigned& var_count) const; }; class IterationStatement : public Statement { protected: - StatementPtr m_statement; + StatementPtr statement_; public: IterationStatement(Statement* statement); virtual void print() const; - virtual void printxml() const; - virtual VariableStackBindings printasm(VariableStackBindings bindings) const; + virtual void printXml() const; + virtual VariableStackBindings printAsm(VariableStackBindings bindings) const; - virtual void count_variables(int32_t& var_count) const; + virtual void countVariables(unsigned& var_count) const; }; diff --git a/c_compiler/include/translation_unit.hpp b/c_compiler/include/translation_unit.hpp index 75ee53b..3e8197a 100644 --- a/c_compiler/include/translation_unit.hpp +++ b/c_compiler/include/translation_unit.hpp @@ -1,6 +1,7 @@ #ifndef TRANSLATION_UNIT_HPP #define TRANSLATION_UNIT_HPP +#include "bindings.hpp" #include "node.hpp" #include <memory> @@ -11,16 +12,16 @@ typedef std::shared_ptr<Node> NodePtr; class TranslationUnit : public Node { protected: - std::vector<NodePtr> translation_unit; + std::vector<NodePtr> translation_unit_; public: - TranslationUnit(Node* decl); + TranslationUnit(Node* external_declaration); virtual void print() const; - virtual void printxml() const; - virtual VariableStackBindings printasm(VariableStackBindings bindings) const; + virtual void printXml() const; + virtual VariableStackBindings printAsm(VariableStackBindings bindings) const; - void push(Node* decl); + void push(Node* external_declaration); }; diff --git a/c_compiler/include/type.hpp b/c_compiler/include/type.hpp index 608b660..80afdfe 100644 --- a/c_compiler/include/type.hpp +++ b/c_compiler/include/type.hpp @@ -1,9 +1,11 @@ #ifndef TYPE_HPP #define TYPE_HPP +#include "bindings.hpp" #include "node.hpp" #include <memory> +#include <string> class Type; @@ -12,8 +14,8 @@ typedef std::shared_ptr<Type> TypePtr; class Type : public Node { public: virtual void print() const; - virtual void printxml() const; - virtual VariableStackBindings printasm(VariableStackBindings bindings) const; + virtual void printXml() const; + virtual VariableStackBindings printAsm(VariableStackBindings bindings) const; virtual std::string getType() const = 0; }; @@ -27,10 +29,10 @@ public: class Pointer : public Type { protected: - TypePtr pointer_type; + TypePtr pointer_type_; public: - Pointer(Type* _pointer_type); + Pointer(Type* pointer_type); virtual std::string getType() const; }; @@ -38,11 +40,11 @@ public: class Array : public Type { protected: - int32_t size; - TypePtr array_type; + TypePtr array_type_; + unsigned size_; public: - Array(Type* _array_type, int32_t _size = 0); + Array(Type* array_type, unsigned size = 0); virtual std::string getType() const; }; |