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 equivelent to the code
>>> code = compile('a + 5', 'eval') >>> a = 5 >>> eval(code) 10
The equivelent 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 = parser.compileast(ast) >>> 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) code = parser.compileast(ast) return ast, code def load_expression(source_string): ast = parser.expr(source_string) code = parser.compileast(ast) return ast, code