diff options
author | Andrei Karas <akaras@inbox.ru> | 2015-06-10 16:49:44 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2015-06-10 16:54:47 +0300 |
commit | 77fd4910981d22cb1364c134454bf640e885c81b (patch) | |
tree | 454d92b888e6a6d3c9b033b1647cf3a7f24c80f6 /src/analysis/analysis.cpp | |
parent | 5e6638be7db63eb932048b310bd1bd0d0ba96366 (diff) | |
download | paranucker-77fd4910981d22cb1364c134454bf640e885c81b.tar.gz paranucker-77fd4910981d22cb1364c134454bf640e885c81b.tar.bz2 paranucker-77fd4910981d22cb1364c134454bf640e885c81b.tar.xz paranucker-77fd4910981d22cb1364c134454bf640e885c81b.zip |
Add basic analysis for IF_STMT.
Diffstat (limited to 'src/analysis/analysis.cpp')
-rw-r--r-- | src/analysis/analysis.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/analysis/analysis.cpp b/src/analysis/analysis.cpp index f64c5c1..18120b8 100644 --- a/src/analysis/analysis.cpp +++ b/src/analysis/analysis.cpp @@ -25,6 +25,7 @@ #include "analysis/declaration.h" #include "analysis/expression.h" #include "analysis/function.h" +#include "analysis/statement.h" #include "analysis/walkitem.h" #include "nodes/decl/function_decl.h" @@ -34,6 +35,8 @@ #include "nodes/expr/modify_expr.h" #include "nodes/expr/pointerplus_expr.h" +#include "nodes/stmt/if_stmt.h" + #include "localconsts.h" namespace Analysis @@ -46,7 +49,11 @@ void startWalkTree(Node *node) void walkTree(Node *node, WalkItem wi) { + if (!node) + return; + wi = analyseNode(node, wi); + if (wi.stopWalking) return; @@ -69,6 +76,9 @@ int findBackLocation(Node *node) WalkItem analyseNode(Node *node, WalkItem wi) { + if (!node) + return wi; + // searching function declaration switch (node->nodeType) { @@ -82,6 +92,8 @@ WalkItem analyseNode(Node *node, WalkItem wi) return analysePointerPlusExpr(static_cast<PointerPlusExprNode*>(node), wi); case VAR_DECL: return analyseVarDecl(static_cast<VarDeclNode*>(node), wi); + case IF_STMT: + return analyseIfStmt(static_cast<IfStmtNode*>(node), wi); default: break; } |