[Compiler-sig] AST observations

Jeremy Hylton jeremy@zope.com
Fri, 19 Apr 2002 10:59:39 -0400


>>>>> "FB" == Finn Bock <bckfnn@worldonline.dk> writes:

  FB> [Jeremy]
  >> It might be clearer to merge the walker and the visitor into a
  >> single class using inheritance.  (I think the Walkabout variant
  >> described by Palsberg and Jay does this,
  >> cf. http://citeseer.nj.nec.com/palsberg97essence.html.)

  FB> Yes, and so does the the Visitor pattern they describe in
  FB> 2.3. Based on the performance measurement in chapter 4, at least
  FB> I hope you understand why I argue for a static double dispatch
  FB> Visitor instead of a dynamic dispatching Walkabout pattern. The
  FB> added flexibility of dynamic dispatch is pure YAGNI for
  FB> me. Since I can control the code generated for each AST node, it
  FB> would be plain wrong not to add an 'accept' method.

Yes, indeed.  I wasn't trying to do anything efficiently, and I
definitely did not care about Java performance when I wrote all the
code.

For use in the core of Jython or CPython, however, performance is an
important consideration.  It makes complete sense to generate all the
visitor dispatch code statically for Java and C.  (I wonder how much
performance difference it makes for 100% pure Python.)

Jeremy