@@ -65,7 +65,7 @@ def for_header_to_tuple(target, target_type, iter_) -> t.Tuple[
6565 init = typed_ast3 .Assign (targets = [target ], value = begin , type_comment = None )
6666 else :
6767 init = typed_ast3 .AnnAssign (target = target , annotation = target_type , value = begin , simple = True )
68- condition = typed_ast3 .Compare (left = target , ops = [typed_ast3 .Lt ()], comparators = [end ])
68+ condition = typed_ast3 .Expr ( typed_ast3 . Compare (left = target , ops = [typed_ast3 .Lt ()], comparators = [end ]) )
6969 increment = typed_ast3 .AugAssign (target = target , op = typed_ast3 .Add (), value = step )
7070 return init , condition , increment
7171
@@ -205,12 +205,16 @@ def _AsyncFunctionDef(self, t):
205205
206206 def _For (self , t ):
207207 self .fill ('for (' )
208- init , cond , increment = for_header_to_tuple (t .target , t .resolved_type_comment , t .iter )
209- self .dispatch (init )
210- self .write (', ' )
211- self .dispatch (cond )
212- self .write (', ' )
213- self .dispatch (increment )
208+ init , cond , increment = for_header_to_tuple (t .target , t .type_comment , t .iter )
209+ #self.dispatch(init)
210+ #self.dispatch(cond)
211+ #self.dispatch(increment)
212+ unparser = Cpp14Unparser ()
213+ self .write (unparser .unparse (init ).strip ('\n \r ;)(' ))
214+ self .write ('; ' )
215+ self .write (unparser .unparse (cond ).strip ('\n \r ;)(' ))
216+ self .write ('; ' )
217+ self .write (unparser .unparse (increment ).strip ('\n \r ;)(' ))
214218 # self.dispatch(t.iter)
215219 self .write (')' )
216220 self .enter ()
@@ -308,6 +312,30 @@ def _Comment(self, node):
308312 self .fill ('//' )
309313 self .write (node .value .s )
310314
315+ def _NameConstant (self , node ):
316+ if node .value == 'False' :
317+ self .write ("false" )
318+ elif node .value == 'True' :
319+ self .write ("true" )
320+ elif node .value == 'None' :
321+ self .write ("null" )
322+ else :
323+ self .write (node .value )
324+
325+ def _Str (self , node ):
326+ self .write ('"' )
327+ self .write (node .s .replace ('"' , '\\ "' ).replace ("\0 " , "\\ 0" ).replace ("\n " , "\\ n" ).replace ("\t " , "\\ t" ).replace ("\r " , "\\ r" ))
328+ self .write ('"' )
329+
330+ def _Bytes (self , node ):
331+ # Char
332+ if len (node .s ) == 1 :
333+ self .write ("'" )
334+ self .write (node .s .replace ("'" , "\\ '" ).replace ("\0 " , "\\ 0" ).replace ("\n " , "\\ n" ).replace ("\t " , "\\ t" ).replace ("\r " , "\\ r" ))
335+ self .write ("'" )
336+ else :
337+ self ._Str (node )
338+
311339 def _unsupported_syntax (self , tree , comment : str = '' ):
312340 raise SyntaxError ('unparsing {}{} to C++ is not supported' .format (type (tree ), comment ))
313341
0 commit comments