GNU Info

Info Node: (python2.1-lib.info)Emulation of compile

(python2.1-lib.info)Emulation of compile


Next: Information Discovery Prev: Examples 4 Up: Examples 4
Enter node , (file) or (file)node

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()


automatically generated by info2www version 1.2.2.9