Design
Spoofax is a prototype program-manipulation system that serves as a research vehicle for implementing domain-specific languages, with focus on code plasticity, high-level domain-optimization and generative programming.
It is an interactive development environment running on Eclipse, based around the Stratego program transformation language. Concretely, Spoofax is an Eclipse feature built from the following plugins:
The editor feature provides editors for SDF and Stratego (org.spoofax.editor), a Stratego
interpreter (org.spoofax.interpreter), as well as documentation and help
(org.spoofax.help). The editor depends on the jsglr parser
(org.spoofax.jsglr) for extracting ASTs from the SDF and Stratego source code -- these
ASTs are used for analysis and transformation of Stratego code.
The ASTs are represented as memory-efficient ATerms, provided by the Java ATerm library
(org.spoofax.aterm). The AST transformations are written in Stratego, and are executed by
the Stratego/J interpreter.
