示例#1
0
def compileCodeObjects(filename, codeobjs):
    if len(codeobjs) == 0:
        stmts = []
    else:
        stmts = [ast.For(ast.AssName('[--codeobj--]', 'OP_ASSIGN'),
                         ast.Const(codeobjs),
                         ast.Stmt([ast.Exec(ast.Name('[--codeobj--]'),
                                            None, None)]),
                         None),
                 ast.AssName('[--codeobj--]', 'OP_DELETE')]

    module = ast.Module(None, ast.Stmt(stmts))
    compiler.misc.set_filename(filename, module)
    return pycodegen.ModuleCodeGenerator(module).getCode()
示例#2
0
 def _exec(self, code, env=None, locals=None):
     assertResult(code, "exec")
     if env is not None:
         assertResult(env, "exec in")
         pyenv = topy(env)
     else:
         pyenv = None
     if locals is not None:
         assertResult(locals, "exec in")
         pylocals = topy(locals)
     else:
         pylocals = None
         
     return ast.Exec(topy(code), pyenv, pylocals)
示例#3
0
 def _do_ExecStatement(self, node):
     expr = self.transform(node.Code)
     locals = self.transform(node.Locals)
     globals = self.transform(node.Globals)
     return ast.Exec(expr, globals, locals)