Tom
Tom () is a pattern matching compiler.
in Software tools by Pierre-Etienne Moreau on June 15, 2004 (edited on April 8, 2010)

It is particularly well-suited for programming transformations on trees/terms or XML documents. Tom can be used to develop transformation tools such as compilers: The Tom compiler is written in Tom itself.