Tom is a text processor that translates classes with some special syntax into Java, and integrates pattern matching and rule based programming facilities. It is particularly well-suited for programming various transformations on trees/terms and XML based documents. It has some interesting possible applications as a domain specific language.
Tom adds new constructs to Java that enable information retrieval and transformation (via conditional rules) in lists and trees. Traversals of trees and transformations are based on a strong theoretical background. Tom compiler is mature enough to be used for large scale developments and applications, and integrating Tom in any existing application is straightforward, as Tom produces Java source code.
Some applications developed in Tom (both in academia and industry):
- requests transformations (ex: XQuery requests' optimizations )
- the Tom compiler itself
- languages semantics, interpreters and program transformation tools
- a generator of canonical abstract syntax trees (Gom)
- a Just In Time strategy compiler using dynamic Java bytecode
transformation
- a proof assistant for supernatural deduction
- a compilation algorithm for anti-pattern matching and disunification
A guided tour of Tom can be found
here.
Tom is available, in open source (GPL/BSD License), from the web page:
http://tom.loria.fr/.