GNU Info

Info Node: (python2.1-lib.info)Creating AST Objects

(python2.1-lib.info)Creating AST Objects


Next: Converting AST Objects Prev: parser Up: parser
Enter node , (file) or (file)node

Creating AST Objects
--------------------

AST objects may be created from source code or from a parse tree.  When
creating an AST object from source, different functions are used to
create the `'eval'' and `'exec'' forms.

`expr(source)'
     The `expr()' function parses the parameter SOURCE as if it were an
     input to `compile(SOURCE, 'file.py', 'eval')'.  If the parse
     succeeds, an AST object is created to hold the internal parse tree
     representation, otherwise an appropriate exception is thrown.

`suite(source)'
     The `suite()' function parses the parameter SOURCE as if it were
     an input to `compile(SOURCE, 'file.py', 'exec')'.  If the parse
     succeeds, an AST object is created to hold the internal parse tree
     representation, otherwise an appropriate exception is thrown.

`sequence2ast(sequence)'
     This function accepts a parse tree represented as a sequence and
     builds an internal representation if possible.  If it can validate
     that the tree conforms to the Python grammar and all nodes are
     valid node types in the host version of Python, an AST object is
     created from the internal representation and returned to the
     called.  If there is a problem creating the internal
     representation, or if the tree cannot be validated, a
     `ParserError' exception is thrown.  An AST object created this way
     should not be assumed to compile correctly; normal exceptions
     thrown by compilation may still be initiated when the AST object
     is passed to `compileast()'.  This may indicate problems not
     related to syntax (such as a `MemoryError' exception), but may
     also be due to constructs such as the result of parsing `del
     f(0)', which escapes the Python parser but is checked by the
     bytecode compiler.

     Sequences representing terminal tokens may be represented as either
     two-element lists of the form `(1, 'name')' or as three-element
     lists of the form `(1, 'name', 56)'.  If the third element is
     present, it is assumed to be a valid line number.  The line number
     may be specified for any subset of the terminal symbols in the
     input tree.

`tuple2ast(sequence)'
     This is the same function as `sequence2ast()'.  This entry point
     is maintained for backward compatibility.


automatically generated by info2www version 1.2.2.9