def p_iteration_statement_3(self, p):
def wrap(node, key):<EOL><INDENT>if node is None:<EOL><INDENT>node = self.asttypes.EmptyStatement('<STR_LIT:;>')<EOL>node.setpos(p, key - <NUM_LIT:1>)<EOL>node.lexpos += <NUM_LIT:1><EOL>node.colno += <NUM_LIT:1><EOL><DEDENT>else:<EOL><INDENT>node = self.asttypes.ExprStatement(expr=node)<EOL>node.setpos(p, key)<EOL><DEDENT>return node<EOL><DEDENT>if len(p) == <NUM_LIT:10>:<EOL><INDENT>p[<NUM_LIT:0>] = self.asttypes.For(<EOL>init=wrap(p[<NUM_LIT:3>], <NUM_LIT:3>), cond=wrap(p[<NUM_LIT:5>], <NUM_LIT:5>),<EOL>count=p[<NUM_LIT:7>], statement=p[<NUM_LIT:9>])<EOL><DEDENT>else:<EOL><INDENT>init = self.asttypes.VarStatement(p[<NUM_LIT:4>])<EOL>init.setpos(p, <NUM_LIT:3>)<EOL>p[<NUM_LIT:0>] = self.asttypes.For(<EOL>init=init, cond=wrap(p[<NUM_LIT:6>], <NUM_LIT:6>), count=p[<NUM_LIT:8>], statement=p[<NUM_LIT:10>])<EOL><DEDENT>p[<NUM_LIT:0>].setpos(p)<EOL>
iteration_statement \
    : FOR LPAREN expr_noin_opt SEMI expr_opt SEMI expr_opt RPAREN \
          statement
    | FOR LPAREN VAR variable_declaration_list_noin SEMI expr_opt SEMI\
          expr_opt RPAREN statement