public IrStmt visit(IrStmtList t) { IrStmtList stmts = new IrStmtList(); for (int i = 0; i < t.size(); i++) { IrStmt s = ((IrStmt)t.elementAt(i)).accept(this); stmts.add(s); } return stmts; }
private IrStmtList flattern(IrStmtList list) { IrStmtList sl = new IrStmtList(); for (int i = 0; i < list.size(); i++) { IrStmt s = (IrStmt)list.elementAt(i); if (null != (s as IrStmtList)) { sl.add(flattern((IrStmtList)s)); } else { sl.add(s); } } return sl; }
// VarDeclList --- public IrStmtList visit(AstVarDeclList n) { IrStmtList sl = new IrStmtList(); IrStmt s; for (int i = 0; i < n.Count(); i++) { s = n[i].accept(this); if (s != null) sl.add(s); } if (sl.size() > 0) return sl; else return null; }
// Statements public int visit(IrStmtList sl) { int ret = STATUS_DEFAULT; int i = 0; while (i < sl.size()) { int next = ((IrStmt) sl.elementAt(i)).accept(this); if (next == STATUS_RETURN) { ret = STATUS_RETURN; break; } i = (next >= 0) ? next : i+1; } return ret; }