The Revisitor pattern is a language implementation pattern that enables independent extensibility of the syntax and semantics of metamodel-based DSLs, with incremental compilation and without anticipation. It is inspired by the Object Algebra design pattern and adapted to the specificities of metamodeling.

On top of the Revisitor pattern, we introduce ALE, a high-level language for semantics specification of metamodels that compiles to Revisitors to support separate compilation of language modules.

ALE is tightly integrated with the Eclipse Modeling Framework (EMF) and relies on the Ecore meta-language for the definition of the abstract syntax of DSLs. Operational semantics is defined with ALE using an open-class-like mechanism. ALE is bundled a set of Eclipse plug-ins.