From 8423949f42f79aa0a2af9a7d8e359ed9d9b3f6cb Mon Sep 17 00:00:00 2001 From: Markus Hauschild Date: Sat, 1 Jun 2013 02:27:01 +0200 Subject: [PATCH] Formatting and add Scope --- CMakeLists.txt | 77 ++++++++++++++++++++++---------------------- grammar/grammar.y | 1 + inc/AST/ASTVisitor.h | 4 ++- inc/AST/Scope.h | 18 +++++++++++ src/AST/Scope.cpp | 18 +++++++++++ 5 files changed, 79 insertions(+), 39 deletions(-) create mode 100644 inc/AST/Scope.h create mode 100644 src/AST/Scope.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index a3346cb..d7b52dd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -21,58 +21,59 @@ ADD_EXECUTABLE (lemon grammar/lemon.c) ADD_EXECUTABLE (makeheaders grammar/makeheaders.c) ADD_CUSTOM_COMMAND( - COMMAND cp - ARGS ${CMAKE_CURRENT_SOURCE_DIR}/grammar/grammar.y ${CMAKE_CURRENT_BINARY_DIR} - COMMAND cp - ARGS ${CMAKE_CURRENT_SOURCE_DIR}/grammar/lempar.c ${CMAKE_CURRENT_BINARY_DIR} - COMMAND ${CMAKE_CURRENT_BINARY_DIR}/lemon - ARGS -q -m ${CMAKE_CURRENT_BINARY_DIR}/grammar.y -# ARGS -q ${CMAKE_CURRENT_BINARY_DIR}/grammar.y - COMMAND rm - ARGS ${CMAKE_CURRENT_BINARY_DIR}/lempar.c - COMMAND rm - ARGS ${CMAKE_CURRENT_BINARY_DIR}/grammar.y - COMMAND ${CMAKE_CURRENT_BINARY_DIR}/makeheaders - ARGS ${CMAKE_CURRENT_BINARY_DIR}/grammar.c - COMMAND mv - ARGS ${CMAKE_CURRENT_BINARY_DIR}/grammar.c ${CMAKE_CURRENT_BINARY_DIR}/grammar.cpp - DEPENDS lemon - DEPENDS makeheaders - DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/grammar/grammar.y - OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/grammar.cpp - OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/grammar.h + COMMAND cp + ARGS ${CMAKE_CURRENT_SOURCE_DIR}/grammar/grammar.y ${CMAKE_CURRENT_BINARY_DIR} + COMMAND cp + ARGS ${CMAKE_CURRENT_SOURCE_DIR}/grammar/lempar.c ${CMAKE_CURRENT_BINARY_DIR} + COMMAND ${CMAKE_CURRENT_BINARY_DIR}/lemon + ARGS -q -m ${CMAKE_CURRENT_BINARY_DIR}/grammar.y +# ARGS -q ${CMAKE_CURRENT_BINARY_DIR}/grammar.y + COMMAND rm + ARGS ${CMAKE_CURRENT_BINARY_DIR}/lempar.c + COMMAND rm + ARGS ${CMAKE_CURRENT_BINARY_DIR}/grammar.y + COMMAND ${CMAKE_CURRENT_BINARY_DIR}/makeheaders + ARGS ${CMAKE_CURRENT_BINARY_DIR}/grammar.c + COMMAND mv + ARGS ${CMAKE_CURRENT_BINARY_DIR}/grammar.c ${CMAKE_CURRENT_BINARY_DIR}/grammar.cpp + DEPENDS lemon + DEPENDS makeheaders + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/grammar/grammar.y + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/grammar.cpp + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/grammar.h ) SET_SOURCE_FILES_PROPERTIES( - ${CMAKE_CURRENT_BINARY_DIR}/grammar.cpp GENERATED + ${CMAKE_CURRENT_BINARY_DIR}/grammar.cpp GENERATED ) OPTION (SCULLY_DEBUG "Create a debug build") IF (SCULLY_DEBUG) - ADD_DEFINITIONS ("-g") + ADD_DEFINITIONS ("-g") ENDIF (SCULLY_DEBUG) SET(SCULLY_SOURCE - src/test.cpp + src/test.cpp - src/Token.cpp + src/Token.cpp - src/AST/ASTElement.cpp - src/AST/ASTVisitor.cpp - src/AST/AssignmentExpression.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/StatementList.cpp - src/AST/ValueList.cpp - src/AST/IfStatement.cpp + src/AST/ASTElement.cpp + src/AST/ASTVisitor.cpp + src/AST/AssignmentExpression.cpp + src/AST/BinOp.cpp + src/AST/ConstantExpression.cpp + src/AST/Expression.cpp + src/AST/ParameterList.cpp + src/AST/Scope.cpp + src/AST/Statement.cpp + src/AST/Type.cpp + src/AST/VariableDefinition.cpp + src/AST/StatementList.cpp + src/AST/ValueList.cpp + src/AST/IfStatement.cpp - ${CMAKE_CURRENT_BINARY_DIR}/grammar.cpp + ${CMAKE_CURRENT_BINARY_DIR}/grammar.cpp ) ADD_EXECUTABLE (scully ${SCULLY_SOURCE}) diff --git a/grammar/grammar.y b/grammar/grammar.y index 870467a..47f0d92 100644 --- a/grammar/grammar.y +++ b/grammar/grammar.y @@ -14,6 +14,7 @@ #include "AST/Expression.h" #include "AST/IfStatement.h" #include "AST/ParameterList.h" +#include "AST/Scope.h" #include "AST/Statement.h" #include "AST/StatementList.h" #include "AST/Type.h" diff --git a/inc/AST/ASTVisitor.h b/inc/AST/ASTVisitor.h index 45353e3..a085c49 100644 --- a/inc/AST/ASTVisitor.h +++ b/inc/AST/ASTVisitor.h @@ -6,6 +6,7 @@ #include "ConstantExpression.h" #include "IfStatement.h" #include "ParameterList.h" +#include "Scope.h" #include "StatementList.h" #include "ValueList.h" #include "VariableDefinition.h" @@ -20,9 +21,10 @@ public: virtual void visit(ConstantExpression* e) = 0; virtual void visit(IfStatement* e) = 0; virtual void visit(ParameterList* e) = 0; + virtual void visit(Scope* e) = 0; + virtual void visit(StatementList* e) = 0; virtual void visit(ValueList* e) = 0; virtual void visit(VariableDefinition* e) = 0; - virtual void visit(StatementList* e) = 0; }; #endif // ASTVISITOR_H diff --git a/inc/AST/Scope.h b/inc/AST/Scope.h new file mode 100644 index 0000000..7fcfda2 --- /dev/null +++ b/inc/AST/Scope.h @@ -0,0 +1,18 @@ +#ifndef SCOPE_H +#define SCOPE_H + +#include "AST/Statement.h" + +class Scope : public Statement { +public: + Scope(Statement* stmt); + virtual ~Scope(); + + virtual void accept(ASTVisitor* visitor); + + Statement* getStmt(); +private: + Statement* stmt_; +}; + +#endif // SCOPE_H diff --git a/src/AST/Scope.cpp b/src/AST/Scope.cpp new file mode 100644 index 0000000..a05e23c --- /dev/null +++ b/src/AST/Scope.cpp @@ -0,0 +1,18 @@ +#include "AST/Scope.h" +#include "AST/ASTVisitor.h" + +Scope::Scope(Statement* stmt) : stmt_(stmt) { + // +} + +Scope::~Scope() { + // +} + +void Scope::accept(ASTVisitor* visitor) { + visitor->visit(this); +} + +Statement* Scope::getStmt() { + return stmt_; +}