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);
    }
}
Esempio n. 2
0
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();
}
Esempio n. 4
0
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();
}
Esempio n. 6
0
  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;
  }
Esempio n. 7
0
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;
}