diff options
author | Andrei Karas <akaras@inbox.ru> | 2015-07-20 22:46:22 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2015-07-20 22:46:22 +0300 |
commit | ed8886187ea569953380a8d3424a3a41147eceaa (patch) | |
tree | 82a212ec6da3f244a5d65b362e0c38270194bb00 | |
parent | 2e3d34cf490f182d6d14b5571b218cd155075a03 (diff) | |
download | paranucker-ed8886187ea569953380a8d3424a3a41147eceaa.tar.gz paranucker-ed8886187ea569953380a8d3424a3a41147eceaa.tar.bz2 paranucker-ed8886187ea569953380a8d3424a3a41147eceaa.tar.xz paranucker-ed8886187ea569953380a8d3424a3a41147eceaa.zip |
Work with break statement in same way like with continue.
-rw-r--r-- | src/analysis/analysis.cpp | 4 | ||||
-rw-r--r-- | src/analysis/statement.cpp | 6 | ||||
-rw-r--r-- | src/analysis/statement.h | 5 |
3 files changed, 15 insertions, 0 deletions
diff --git a/src/analysis/analysis.cpp b/src/analysis/analysis.cpp index e35de85..32c0170 100644 --- a/src/analysis/analysis.cpp +++ b/src/analysis/analysis.cpp @@ -55,6 +55,7 @@ #include "nodes/ref/component_ref.h" +#include "nodes/stmt/break_stmt.h" #include "nodes/stmt/continue_stmt.h" #include "nodes/stmt/if_stmt.h" #include "nodes/stmt/while_stmt.h" @@ -278,6 +279,9 @@ void analyseNode(Node *node, const WalkItem &wi, WalkItem &wo) case VAR_DECL: analyseVarDecl(static_cast<VarDeclNode*>(node), wi2, wo); break; + case BREAK_STMT: + analyseBreakStmt(static_cast<BreakStmtNode*>(node), wi2, wo); + break; case IF_STMT: analyseIfStmt(static_cast<IfStmtNode*>(node), wi2, wo); break; diff --git a/src/analysis/statement.cpp b/src/analysis/statement.cpp index e22cdae..5e6ea7a 100644 --- a/src/analysis/statement.cpp +++ b/src/analysis/statement.cpp @@ -34,6 +34,7 @@ #include "nodes/ref/indirect_ref.h" +#include "nodes/stmt/break_stmt.h" #include "nodes/stmt/continue_stmt.h" #include "nodes/stmt/if_stmt.h" #include "nodes/stmt/while_stmt.h" @@ -285,4 +286,9 @@ void analyseContinueStmt(ContinueStmtNode *node, const WalkItem &wi, WalkItem &w wo.isContinued = true; } +void analyseBreakStmt(BreakStmtNode *node, const WalkItem &wi, WalkItem &wo) +{ + wo.isContinued = true; +} + } diff --git a/src/analysis/statement.h b/src/analysis/statement.h index 5637da7..c24e50a 100644 --- a/src/analysis/statement.h +++ b/src/analysis/statement.h @@ -22,6 +22,7 @@ #include "includes.h" +struct BreakStmtNode; struct ContinueStmtNode; struct IfStmtNode; struct Node; @@ -45,6 +46,10 @@ namespace Analysis const WalkItem &wi, WalkItem &wo); + void analyseBreakStmt(BreakStmtNode *node, + const WalkItem &wi, + WalkItem &wo); + void analyseContinueStmt(ContinueStmtNode *node, const WalkItem &wi, WalkItem &wo); |