mirror of
https://github.com/python/cpython.git
synced 2025-08-03 16:39:00 +00:00
Merged revisions 62049,62054 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk ........ r62049 | georg.brandl | 2008-03-30 00:01:47 -0700 (Sun, 30 Mar 2008) | 2 lines #2505: allow easier creation of AST nodes. ........ r62054 | georg.brandl | 2008-03-30 12:43:27 -0700 (Sun, 30 Mar 2008) | 2 lines Fix error message -- "expects either 0 or 0 arguments" ........
This commit is contained in:
parent
db4115ffc0
commit
207c9f3c5c
3 changed files with 241 additions and 31 deletions
|
@ -44,9 +44,32 @@ node. The utf8 offset is recorded because the parser uses utf8 internally.
|
|||
If these attributes are marked as optional in the grammar (using a question
|
||||
mark), the value might be ``None``. If the attributes can have zero-or-more
|
||||
values (marked with an asterisk), the values are represented as Python lists.
|
||||
All possible attributes must be present and have valid values when compiling an
|
||||
AST with :func:`compile`.
|
||||
|
||||
The constructor of a class ``_ast.T`` parses their arguments as follows:
|
||||
|
||||
* If there are positional arguments, there must be as many as there are items in
|
||||
``T._fields``; they will be assigned as attributes of these names.
|
||||
* If there are keyword arguments, they will set the attributes of the same names
|
||||
to the given values.
|
||||
|
||||
For example, to create and populate a ``UnaryOp`` node, you could use ::
|
||||
|
||||
node = _ast.UnaryOp()
|
||||
node.op = _ast.USub()
|
||||
node.operand = _ast.Num()
|
||||
node.operand.n = 5
|
||||
node.operand.lineno = 0
|
||||
node.operand.col_offset = 0
|
||||
node.lineno = 0
|
||||
node.col_offset = 0
|
||||
|
||||
or the more compact ::
|
||||
|
||||
node = _ast.UnaryOp(_ast.USub(), _ast.Num(5, lineno=0, col_offset=0),
|
||||
lineno=0, col_offset=0)
|
||||
|
||||
The constructors of all ``_ast`` classes don't take arguments; instead, if you
|
||||
create instances, you must assign the required attributes separately.
|
||||
|
||||
|
||||
Abstract Grammar
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue