Example #1
0
 def mod_scope(self, source, mode="exec"):
     info = pyparse.CompileInfo("<test>", mode,
                                consts.CO_FUTURE_WITH_STATEMENT)
     tree = self.parser.parse_source(source, info)
     module = astbuilder.ast_from_node(self.space, tree, info)
     builder = symtable.SymtableBuilder(self.space, module, info)
     scope = builder.find_scope(module)
     assert isinstance(scope, symtable.ModuleScope)
     return scope
Example #2
0
def generate_function_code(expr, space):
    p = pyparse.PythonParser(space)
    info = pyparse.CompileInfo("<test>", 'exec')
    cst = p.parse_source(expr, info)
    ast = astbuilder.ast_from_node(space, cst, info)
    function_ast = optimize.optimize_ast(space, ast.body[0], info)
    function_ast = ast.body[0]
    symbols = symtable.SymtableBuilder(space, ast, info)
    generator = codegen.FunctionCodeGenerator(space, 'function', function_ast,
                                              1, symbols, info)
    blocks = generator.first_block.post_order()
    generator._resolve_block_targets(blocks)
    return generator, blocks
Example #3
0
def compile_ast(space, module, info):
    """Generate a code object from AST."""
    symbols = symtable.SymtableBuilder(space, module, info)
    return TopLevelCodeGenerator(space, module, symbols, info).assemble()