Info Node: (python2.1-lib.info)Emulation of compile
(python2.1-lib.info)Emulation of compile
Emulation of `compile()'
........................
While many useful operations may take place between parsing and
bytecode generation, the simplest operation is to do nothing. For this
purpose, using the `parser' module to produce an intermediate data
structure is equivalent to the code
>>> code = compile('a + 5', 'file.py', 'eval')
>>> a = 5
>>> eval(code)
10
The equivalent operation using the `parser' module is somewhat longer,
and allows the intermediate internal parse tree to be retained as an
AST object:
>>> import parser
>>> ast = parser.expr('a + 5')
>>> code = ast.compile('file.py')
>>> a = 5
>>> eval(code)
10
An application which needs both AST and code objects can package this
code into readily available functions:
import parser
def load_suite(source_string):
ast = parser.suite(source_string)
return ast, ast.compile()
def load_expression(source_string):
ast = parser.expr(source_string)
return ast, ast.compile()