[Compiler-sig] Assign nodes
Jeremy Hylton
jeremy@zope.com
Tue, 16 Apr 2002 11:45:31 -0400
>>>>> "FB" == Finn Bock <bckfnn@worldonline.dk> writes:
FB> And I don't like this change one single bit. Yes sure, it looks
FB> prettier than using Lvalue and it captures useful information,
FB> but it makes a one-pass AST builder a lot harder to do.
I felt it simplified the code generator for the compiler package, but
I don't have any experience with a one-pass AST builder. So it's hard
for me to judge what the tradeoffs are. You haven't written a code
generator, right? If so, we've each got experience with one end of
the problem, but not with both.
FB> You probably don't care because you have an intermediate parse
FB> tree with all the context needed to know if you must create a
FB> Name node or a AssignName node.
I'd be interested in taking a look at the one-pass AST builder.
Eventually, I'd like to have one for CPython.
FB> When my parser detect a name, I have no way of knowing if an
FB> equal sign will turn up later. So I'll have to pick one node
FB> type (like Name) and rebuild that part of the tree later if it
FB> turned out that it was part of an assignment or deletion. Ugly.
Indeed, and perhaps a compelling case against the richer AST. I
assume the difference is that CPython's compiler is top-down and yours
is bottom-up?
FB> As I have said before, I think the desire for correct typing in
FB> the tree is overrated and I would rather remove the 'assign' sum
FB> altogether and add a flag to the Attribute, Subscript, Name,
FB> List and Tuple nodes that captured the use of the node (like
FB> 'Get', 'Set' and 'Del').
I'll noodle with the code generator in the compiler package and see
what it would look like if the AssignXXX nodes went away.
Jeremy