private void print(ForLoop node) throws IOException { writer.append("for").ws().append('('); print(node.getInitializer()); writer.append(';'); print(node.getCondition()); writer.append(';'); print(node.getIncrement()); writer.append(')').ws(); print(node.getBody()); }
private void print(ForLoop node) throws IOException { writer.append("for").ws().append('('); print(node.getInitializer()); writer.append(';'); print(node.getCondition()); writer.append(';'); print(node.getIncrement()); writer.append(')').ws(); print(node.getBody()); }
@Override public CAstNode visitForLoop(ForLoop node, WalkContext arg) { AstNode breakStmt = makeEmptyLabelStmt("breakLabel"); CAstNode breakLabel = visit(breakStmt, arg); AstNode contStmt = makeEmptyLabelStmt("contLabel"); CAstNode contLabel = visit(contStmt, arg); WalkContext loopContext = makeLoopContext(node, arg, breakStmt, contStmt); CAstNode loop; CAstNode top = Ast.makeNode(CAstNode.BLOCK_STMT, visit(node.getInitializer(), arg), loop = Ast.makeNode(CAstNode.LOOP, visit(node.getCondition(), arg), Ast.makeNode(CAstNode.BLOCK_STMT, visit(node.getBody(), loopContext), contLabel, visit(node.getIncrement(), arg))), breakLabel); arg.cfg().map(node, loop); return top; }
private Node transformForLoop(ForLoop loop) { decompiler.addToken(Token.FOR); decompiler.addToken(Token.LP); loop.setType(Token.LOOP); // XXX: Can't use pushScope/popScope here since 'createFor' may split // the scope Scope savedScope = currentScope; currentScope = loop; try { Node init = transform(loop.getInitializer()); decompiler.addToken(Token.SEMI); Node test = transform(loop.getCondition()); decompiler.addToken(Token.SEMI); Node incr = transform(loop.getIncrement()); decompiler.addToken(Token.RP); decompiler.addEOL(Token.LC); Node body = transform(loop.getBody()); decompiler.addEOL(Token.RC); return createFor(loop, init, test, incr, body); } finally { currentScope = savedScope; } }
private Node transformForLoop(ForLoop loop) { decompiler.addToken(Token.FOR); decompiler.addToken(Token.LP); loop.setType(Token.LOOP); // XXX: Can't use pushScope/popScope here since 'createFor' may split // the scope Scope savedScope = currentScope; currentScope = loop; try { Node init = transform(loop.getInitializer()); decompiler.addToken(Token.SEMI); Node test = transform(loop.getCondition()); decompiler.addToken(Token.SEMI); Node incr = transform(loop.getIncrement()); decompiler.addToken(Token.RP); decompiler.addEOL(Token.LC); Node body = transform(loop.getBody()); decompiler.addEOL(Token.RC); return createFor(loop, init, test, incr, body); } finally { currentScope = savedScope; } }
private Node transformForLoop(ForLoop loop) { decompiler.addToken(Token.FOR); decompiler.addToken(Token.LP); loop.setType(Token.LOOP); // XXX: Can't use pushScope/popScope here since 'createFor' may split // the scope Scope savedScope = currentScope; currentScope = loop; try { Node init = transform(loop.getInitializer()); decompiler.addToken(Token.SEMI); Node test = transform(loop.getCondition()); decompiler.addToken(Token.SEMI); Node incr = transform(loop.getIncrement()); decompiler.addToken(Token.RP); decompiler.addEOL(Token.LC); Node body = transform(loop.getBody()); decompiler.addEOL(Token.RC); return createFor(loop, init, test, incr, body); } finally { currentScope = savedScope; } }
private Node transformForLoop(ForLoop loop) { decompiler.addToken(Token.FOR); decompiler.addToken(Token.LP); loop.setType(Token.LOOP); // XXX: Can't use pushScope/popScope here since 'createFor' may split // the scope Scope savedScope = currentScope; currentScope = loop; try { Node init = transform(loop.getInitializer()); decompiler.addToken(Token.SEMI); Node test = transform(loop.getCondition()); decompiler.addToken(Token.SEMI); Node incr = transform(loop.getIncrement()); decompiler.addToken(Token.RP); decompiler.addEOL(Token.LC); Node body = transform(loop.getBody()); decompiler.addEOL(Token.RC); return createFor(loop, init, test, incr, body); } finally { currentScope = savedScope; } }