Participants : Jean-Christophe Bach, Emilie Balland, Paul Brauner, Horatiu Cirstea, Pierre-Etienne Moreau [ correspondant ] , Claudia Tavares.
Since 2002, we have developed a new system called Tom  , presented in  ,  . This system consists of a pattern matching compiler which is particularly well-suited for programming various transformations on trees/terms and XML documents. Its design follows our experiences on the efficient compilation of rule-based systems  . The main originality of this system is to be language and data-structure independent. This means that the Tom technology can be used in a C, C++ or Java environment. The tool can be seen as a Yacc-like compiler translating patterns into executable pattern matching automata. Similarly to Yacc, when a match is found, the corresponding semantic action (a sequence of instructions written in the chosen underlying language) is triggered and executed. Tom supports sophisticated matching theories such as associative matching with neutral element (also known as list-matching). This kind of matching theory is particularly well-suited to perform list or XML based transformations for example.
In addition to the notion of rule , Tom offers a sophisticated way of controlling their application: a strategy langage. Based on a clear semantics, this language allows to define classical traversal strategies such a innermost , outermost , etc.
Recently, we have developed an extension of pattern matching, called anti-pattern matching . This correspond to a natural way to specify complements (i.e. what should not be there to fire a rule). Tom also supports the definition of cyclic graph data-structures, as well as matching algorithm and rewriting rules for term-graphs.
Tom is documented, maintained, and available at http://tom.loria.fr and http://gforge.inria.fr/projects/tom .