Example #1
0
 def visit_List(self, node):
     expr = self.generic_visit(node)
     #print dir(expr)
     #lst = [l.n for l in expr.elts]
     #List(elts=[Num(n=1), Num(n=2), Num(n=3), Num(n=4)]
     return List(elts=expr.elts)
     return NesArray(expr.elts)
Example #2
0
 def visit_Assign(self, node):
     global game
     if (len(node.targets) == 1):
         if isinstance(node.value, ast.Call):
             self.generic_visit(node)
             varname = node.targets[0].id
             call = node.value
             if call.func.id:
                 if (len(self.stack.last()) == 1
                         and isinstance(self.stack.last()[0], NesType)):
                     rs = self.stack.resolve()[0]
                     self.stack.wipe()
                     game.set_var(varname, rs)
         elif isinstance(node.value, ast.List):
             self.generic_visit(node)
             #TODO: just umpile
             varname = node.targets[0].id
             assert isinstance(self.stack.last()[0], NesArray)
             assert varname == self.stack.current()[0]
             lst = [l.n for l in node.value.elts]
             game.set_var(varname, NesArray(lst))
         elif isinstance(node.value, ast.Str):
             self.generic_visit(node)
             varname = node.targets[0].id
             assert isinstance(self.stack.last()[0], NesString)
             assert varname == self.stack.current()[0]
             value = self.stack.resolve()[0]
             self.stack.wipe()
             game.set_var(varname, value)
         elif 'ctx' in dir(node.targets[0]):  #TODO fix this please
             self.generic_visit(node)  #TODO: upthis
             if len(self.stack.last()) == 1 and isinstance(
                     self.stack.last()[0], int):
                 game += '  LDA #%02d\n' % self.stack.resolve()[0]
             if len(self.stack.current()) == 2:
                 address = getattr(self.stack.current()[0],
                                   self.stack.current()[1])
                 game += '  STA $%04x\n' % address
             elif (len(self.stack.current()) == 1
                   and isinstance(self.stack.current()[0], NesRs)):
                 rs = self.stack.current()[0]
                 self.stack.wipe()
                 name = rs.instance_name
                 game += ' STA %s\n' % name
Example #3
0
 def visit_List(self, node):
     self.stack(NesArray(node.elts))
Example #4
0
 def visit_List(self, node):
     lst = [l.n for l in node.elts]
     self.stack(NesArray(lst))