[Python-Dev] ast-objects branch created
"Martin v. Löwis"
martin at v.loewis.de
Thu Dec 1 00:12:48 CET 2005
I created
http://svn.python.org/projects/python/branches/ast-objects/
You can convert your repository to that branch with
svn switch svn+ssh://pythondev@svn.python.org/python/branches/ast-objects
in the toplevel directory. In particular, this features
http://svn.python.org/projects/python/branches/ast-objects/Parser/asdl_c.py
http://svn.python.org/projects/python/branches/ast-objects/Include/Python-ast.h
http://svn.python.org/projects/python/branches/ast-objects/Python/Python-ast.c
The status is currently this:
- asdl_c generates a type hierarchy: "Sum" productions have one type
per constructor, inheriting from a type for the sum; plain products
only have a type for the product.
- attributes are in the base type, accessible through o->_base.attr;
projections of the product types are accessible directly through
member names.
- all projections must be non-NULL. Sequences are represented through
potentially empty lists; optional types are potentially represented
through Py_None. bool is gone; use Py_True/Py_False. The only
primitive type remaining is int (which only occurs in lineno)
- the types currently have only a constructor, a dealloc function,
and an _Check macro.
- Naming is this: for cross-object-file visible symbols (functions
and global variables), a Py_ prefix is used. Otherwise, I use
the type name or constructor name directly. There is a #define
for the Py_<type>_New function, so you can also write <type>(params).
Parameter order for the types is: projections first, then
attributes.
- For compatibility with the current code, the Sum base types
also have the _kind enumeration (although that appears not
to get initialized right now).
For asdl_c, I see the following things as TODOs:
- add support for traversing the types from C, through tp_members
(read-only). Optionally add support for pickling.
- add support for garbage collection. I don't expect this to be
necessary right now, but will be if the API is exposed, and it
doesn't cost much.
The bigger chunk of necessary changes is in using these, starting
with ast.c.
Feel free to commit any changes to that branch that you consider
helpful. To avoid duplicated work, posting a note here might
also help.
Regards,
Martin
More information about the Python-Dev
mailing list