From deab2d7dbc4853a61f647b9da0b50d34829bbc05 Mon Sep 17 00:00:00 2001 From: Peter Dahlberg Date: Sat, 1 Jun 2013 02:16:34 +0200 Subject: [PATCH] StatementList --- CMakeLists.txt | 13 +++++++------ inc/AST/ASTVisitor.h | 2 ++ inc/AST/StatementList.h | 20 ++++++++++++++++++++ src/AST/ParameterList.cpp | 2 -- src/AST/StatementList.cpp | 22 ++++++++++++++++++++++ 5 files changed, 51 insertions(+), 8 deletions(-) create mode 100644 inc/AST/StatementList.h create mode 100644 src/AST/StatementList.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 2414da0..79e7864 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -61,13 +61,14 @@ SET(SCULLY_SOURCE src/AST/ASTElement.cpp src/AST/ASTVisitor.cpp src/AST/AssignmentExpression.cpp - src/AST/BinOp.cpp + src/AST/BinOp.cpp src/AST/ConstantExpression.cpp - src/AST/Expression.cpp - src/AST/ParameterList.cpp - src/AST/Statement.cpp - src/AST/Type.cpp - src/AST/VariableDefinition.cpp + src/AST/Expression.cpp + src/AST/ParameterList.cpp + src/AST/Statement.cpp + src/AST/Type.cpp + src/AST/VariableDefinition.cpp + src/AST/StatementList.cpp ${CMAKE_CURRENT_BINARY_DIR}/grammar.cpp ) diff --git a/inc/AST/ASTVisitor.h b/inc/AST/ASTVisitor.h index a90d8e4..54db30e 100644 --- a/inc/AST/ASTVisitor.h +++ b/inc/AST/ASTVisitor.h @@ -6,6 +6,7 @@ #include "ConstantExpression.h" #include "VariableDefinition.h" #include "ParameterList.h" +#include "StatementList.h" class ASTVisitor { public: @@ -17,6 +18,7 @@ public: virtual void visit(ConstantExpression* e) = 0; virtual void visit(ParameterList* e) = 0; virtual void visit(VariableDefinition* e) = 0; + virtual void visit(StatementList* e) = 0; }; #endif // ASTVISITOR_H diff --git a/inc/AST/StatementList.h b/inc/AST/StatementList.h new file mode 100644 index 0000000..225f3aa --- /dev/null +++ b/inc/AST/StatementList.h @@ -0,0 +1,20 @@ +#ifndef STATEMENTLIST_H +#define STATEMENTLIST_H + +#include +#include "AST/ASTElement.h" +#include "AST/Statement.h" + +class StatementList : public ASTElement +{ +public: + StatementList(); + virtual ~StatementList(); + virtual void accept(ASTVisitor* visitor); + void addStatement(Statement* statement); + std::vector getStatements(); +private: + std::vector statements_; +}; + +#endif // STATEMENTLIST_H diff --git a/src/AST/ParameterList.cpp b/src/AST/ParameterList.cpp index 4501e89..62aa225 100644 --- a/src/AST/ParameterList.cpp +++ b/src/AST/ParameterList.cpp @@ -1,6 +1,5 @@ #include "AST/ParameterList.h" #include "AST/ASTVisitor.h" -#include ParameterList::ParameterList() { // @@ -15,7 +14,6 @@ void ParameterList::accept(ASTVisitor* visitor) { } void ParameterList::addParameter(Type* type, std::string name) { - std::cout << "added parameter of type " << type->getName() << " and name " << name << std::endl; params_.push_back(Parameter(type, name)); } diff --git a/src/AST/StatementList.cpp b/src/AST/StatementList.cpp new file mode 100644 index 0000000..466880b --- /dev/null +++ b/src/AST/StatementList.cpp @@ -0,0 +1,22 @@ +#include "AST/StatementList.h" +#include "AST/ASTVisitor.h" + +StatementList::StatementList() { + // +} + +StatementList::~StatementList() { + // +} + +void StatementList::accept(ASTVisitor* visitor) { + visitor->visit(this); +} + +void StatementList::addStatement(Statement* statement) { + statements_.push_back(statement); +} + +std::vector StatementList::getStatements() { + return statements_; +}