Python 2.0 parser module bug(?) and a Q
murple at my-deja.com
murple at my-deja.com
Mon Jan 22 05:01:11 EST 2001
Hi,
> > A colleague of mine has an "unparser" module
for Python AST; that is
> > not (yet) released to the public, and works
not (yet) for 2.0.
I'm the colleague mentioned. My solution to the
problem doesn't look as good as yours.
I was rebuilding the Python-code by examining
the structure of the syntax-tree.
This is the reason, it's not working with Python
2.0. I was using the strings in the syntax-tree
only for identifiers. Feeling a little bit
stupid for not seeing this other solution.
> Any constructive critisism is welcome!
Ok, your wish is my command :-)
I noticed two problems:
1. If you have double DEDENT, there is a
'\r' left in the resulting string. This
seems to be easely solved by an replace()
2. Anything like "modul.class.function" comes out
as "modul . class . function". Using replace
to solve this is not good, since you would replace
also in wrong places. I think, here you would have
to look into the structure of the syntax-tree.
Maybe you have an solution for 2.?
Another question is, which way is faster.
You have to do more recursions, because when
I find a symbol.sym_name["class_stmt"] I write a
"class", you go another step to find the "class"
string in the tree.
On the other side, I have to do a lot more
comparisons then you.
Maybe after a code-cleanup I will compare the
solutions.
Anyway, I learned a lot about Python by doing
this Unparser (as I call it). It was my first
Python-program ever. And I learned a lot about
Python-Syntax this way.
Hope my comments help you in any way.
By, Andreas
Sent via Deja.com
http://www.deja.com/
More information about the Python-list
mailing list