The purpose of CRSX is to implement an extended higher-order rewriting
formalism to facilitate writing compilers and other syntax-directed
transformation systems, specifically:

Special notations for using embedded syntax, even higher order abstract syntax.

Special support for symbol tables, environments, and attributes, as used in compilers.

A polymorphic sort system (which in practice means that CRSX systems are contraction schemes).

CRSX systems can be compiled directly to native code (so far in C or Java (experimental)) for effective execution.

Downloads

CRSX releases come in two flavors:

HACS is a packaging of CRSX intended as an introduction to compiler generation.
The package, including a manual, is distributed as hacs.zip.

The full CRSX release contains the low level engine with several examples but very sketchy documentation;
it is available from the SourceForge CRSX download page.

If in doubt get the HACS release.

History

CRS was invented by J. W. Klop in
1980 based on ideas in a note by Peter Aczel.
The foundational idea of CRS was to allow rewriting rules that
allow for matching binding constructs and performing substitution
as part of rewrite steps. The seminal paper on CRS is: