def visit_For(self, node):
"""
For(expr target, expr iter, stmt* body, stmt* orelse)
"""
if not isinstance(node.target, (ast.Name,ast.Tuple, ast.List)):
raise RubyError("argument decomposition in 'for' loop is not supported")
#if isinstance(node.target, ast.Tuple):
#print self.visit(node.iter) #or Variable (String case)
#if isinstance(node.iter, ast.Str):
self._tuple_type = '()'
for_target = self.visit(node.target)
self._tuple_type = '[]'
#if isinstance(node.iter, (ast.Tuple, ast.List)):
# for_iter = "[%s]" % self.visit(node.iter)
#else:
# for_iter = self.visit(node.iter)
# ast.Tuple, ast.List, ast.*
for_iter = self.visit(node.iter)
iter_dummy = self.new_dummy()
orelse_dummy = self.new_dummy()
exc_dummy = self.new_dummy()
self.write("for %s in %s" % (for_target, for_iter))
self.indent()
for stmt in node.body:
self.visit(stmt)
self.dedent()
self.write("end")
if node.orelse:
self.write("if (%s) {" % orelse_dummy)
self.indent()
for stmt in node.orelse:
self.visit(stmt)
self.dedent()
self.write("}")
评论列表
文章目录