Tom is a pattern matching compiler developed at INRIA. It is
particularly well-suited for programming various transformations on
trees/terms and XML based documents. Its design follows our research
on the efficient compilation of rule based languages (e.g. ELAN,
developed at INRIA-Loria).
This release continues our work on the integration of pattern matching
and rule based programming facilities into C and Java.
Many applications have been developed in Tom. Among them, lets mention:
the Tom compiler itself
languages semantics, interpreters and program transformation tools
a prover for the Calculus of Structures
an interpreter for the Rho Calculus
a disunification algorithm
Tom is a complex compiler which adds powerful constructs to C and
Java: non linear syntactic matching, associative matching with neutral
element (a.k.a. list-matching), XML based pattern matching, string
matching, and equational rewriting.
This offers the possibility to analyze and transform any kind of
data-structure. Tom can be used for large scale developments and
applications. It comes with documentation, programming, and debugging support.
This new release contains many improvements and new features:
- a new generator of abstract data types implementations (Gom) which supports hooks. In practice, this corresponds to private data types of Caml, which ensures that terms are maintained in canonical form
- a new %strategy construct which allows to easilly define strategies that can be combined using strategy primitives a la Stratego (All, One, Repeat, Choice, Innermost, Mu, etc.)
- a new %[...]% construct which helps to write cide generators (it is no longer necessary to encode special characters of strings)
Tom is available, in open source (GPL/BSD License), from the Tom web page