From 4c38e6f4544f3c55477829020a92105c71668250 Mon Sep 17 00:00:00 2001 From: Markus Hauschild Date: Sat, 1 Jun 2013 02:29:23 +0200 Subject: [PATCH] Fix Scope --- grammar/grammar.y | 2 +- inc/AST/Scope.h | 7 ++++--- src/AST/Scope.cpp | 6 +++--- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/grammar/grammar.y b/grammar/grammar.y index 47f0d92..4f32d9b 100644 --- a/grammar/grammar.y +++ b/grammar/grammar.y @@ -78,7 +78,7 @@ statement(A) ::= T_FOR T_LPAREN expr(INIT) T_SEMICOLON expr(COND) T_SEMICOLON ex statement(A) ::= T_RFOR T_LPAREN expr(INIT) T_SEMICOLON T_CINT(P) T_SEMICOLON expr(STEP) T_RPAREN statement(S). { A = 0; /* INIT P STEP S */ } statement(A) ::= T_RETURN expr(E) T_SEMICOLON. { A = 0; /* E */ } -statement(A) ::= T_BEGIN statements(S) T_END. { A = 0; /* S */ } +statement(A) ::= T_BEGIN statements(S) T_END. { A = new Scope(S); } statement(A) ::= vardef(V) T_SEMICOLON. { A = 0; /* V */ } statement(A) ::= expr(E) T_SEMICOLON. { A = 0; /* E */ } diff --git a/inc/AST/Scope.h b/inc/AST/Scope.h index 7fcfda2..fa67ed2 100644 --- a/inc/AST/Scope.h +++ b/inc/AST/Scope.h @@ -2,17 +2,18 @@ #define SCOPE_H #include "AST/Statement.h" +#include "AST/StatementList.h" class Scope : public Statement { public: - Scope(Statement* stmt); + Scope(StatementList* sl); virtual ~Scope(); virtual void accept(ASTVisitor* visitor); - Statement* getStmt(); + StatementList* getSl(); private: - Statement* stmt_; + StatementList* sl_; }; #endif // SCOPE_H diff --git a/src/AST/Scope.cpp b/src/AST/Scope.cpp index a05e23c..2ad9a28 100644 --- a/src/AST/Scope.cpp +++ b/src/AST/Scope.cpp @@ -1,7 +1,7 @@ #include "AST/Scope.h" #include "AST/ASTVisitor.h" -Scope::Scope(Statement* stmt) : stmt_(stmt) { +Scope::Scope(StatementList *sl) : sl_(sl) { // } @@ -13,6 +13,6 @@ void Scope::accept(ASTVisitor* visitor) { visitor->visit(this); } -Statement* Scope::getStmt() { - return stmt_; +StatementList* Scope::getSl() { + return sl_; }