Oh, come on. While I dislike XML as much as anyone, I can definitely see the advantages of representing an AST as XML and manipulating using a functional language (e.g. XSLT). I think the Stratego languages also do something similar, and they seemed to be quite effective last time I checked.