aboutsummaryrefslogtreecommitdiffstats
path: root/c_compiler/include
diff options
context:
space:
mode:
Diffstat (limited to 'c_compiler/include')
-rw-r--r--c_compiler/include/bindings.hpp19
-rw-r--r--c_compiler/include/declaration.hpp22
-rw-r--r--c_compiler/include/expression.hpp43
-rw-r--r--c_compiler/include/function.hpp19
-rw-r--r--c_compiler/include/node.hpp4
-rw-r--r--c_compiler/include/statement.hpp61
-rw-r--r--c_compiler/include/translation_unit.hpp11
-rw-r--r--c_compiler/include/type.hpp16
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;
};