void SemanticAnalysis::visitBlockStatement(BlockStatement *node) { StatementList *stmts = node->statements(); for (size_t i = 0; i < stmts->length(); i++) { Statement *stmt = stmts->at(i); stmt->accept(this); } }
void SemanticAnalysis::visitBlockStatement(BlockStatement *node) { AutoEnterScope scope(&scope_, node->scope()); for (size_t i = 0; i < node->statements()->length(); i++) { Statement *stmt = node->statements()->at(i); stmt->accept(this); } }
void Why3Translator::visitIndentedUnlessBlock(Statement const& _statement) { bool isBlock = !!dynamic_cast<Block const*>(&_statement); if (isBlock) newLine(); else indent(); _statement.accept(*this); if (isBlock) newLine(); else unindent(); }
bool SemanticAnalysis::analyze(ParseTree *tree) { for (size_t i = 0; i < tree->statements()->length(); i++) { Statement *stmt = tree->statements()->at(i); stmt->accept(this); if (!cc_.canContinueProcessing()) return false; } return cc_.phasePassed(); }
bool SemanticAnalysis::analyze() { ParseTree *tree = tu_->tree(); StatementList *statements = tree->statements(); for (size_t i = 0; i < statements->length(); i++) { Statement *stmt = statements->at(i); if (stmt->isFunctionStatement()) stmt->accept(this); if (!cc_.canContinueProcessing()) return false; } return cc_.phasePassed(); }
JsonObject *analyze(ParseTree *tree) { functions_ = new (pool_) JsonList(); methodmaps_ = new (pool_) JsonList(); enums_ = new (pool_) JsonList(); constants_ = new (pool_) JsonList(); typesets_ = new (pool_) JsonList(); typedefs_ = new (pool_) JsonList(); for (size_t i = 0; i < tree->statements()->length(); i++) { Statement *stmt = tree->statements()->at(i); stmt->accept(this); } JsonObject *obj = new (pool_) JsonObject(); obj->add(cc_.add("functions"), functions_); obj->add(cc_.add("methodmaps"), methodmaps_); obj->add(cc_.add("enums"), enums_); obj->add(cc_.add("constants"), constants_); obj->add(cc_.add("typesets"), typesets_); obj->add(cc_.add("typedefs"), typedefs_); return obj; }
void RtlTest::testVisitor() { StmtVisitorStub* visitor = new StmtVisitorStub(); /* rtl */ RTL *rtl = new RTL(); rtl->accept(visitor); CPPUNIT_ASSERT(visitor->a); delete rtl; /* jump stmt */ GotoStatement *jump = new GotoStatement; jump->accept(visitor); CPPUNIT_ASSERT(visitor->b); delete jump; /* branch stmt */ BranchStatement *jcond = new BranchStatement; jcond->accept(visitor); CPPUNIT_ASSERT(visitor->c); delete jcond; /* nway jump stmt */ CaseStatement *nwayjump = new CaseStatement; nwayjump->accept(visitor); CPPUNIT_ASSERT(visitor->d); delete nwayjump; /* call stmt */ CallStatement *call = new CallStatement; call->accept(visitor); CPPUNIT_ASSERT(visitor->e); delete call; /* return stmt */ ReturnStatement *ret = new ReturnStatement; ret->accept(visitor); CPPUNIT_ASSERT(visitor->f); delete ret; /* "bool" assgn */ BoolAssign *scond = new BoolAssign(0); scond->accept(visitor); CPPUNIT_ASSERT(visitor->g); delete scond; /* assignment stmt */ Assign *as = new Assign; as->accept(visitor); CPPUNIT_ASSERT(visitor->h); delete as; /* polymorphic */ Statement* s = new CallStatement; s->accept(visitor); CPPUNIT_ASSERT(visitor->e); delete s; /* cleanup */ delete visitor; }