Epsilon is a family of languages and tools for code generation, model-to-model transformation, model validation, comparison, migration and refactoring that work out-of-the-box with EMF and other types of of models.

At the core of Epsilon is the Epsilon Object Language (EOL), an imperative model-oriented language that combines the procedural style of JavaScript with the powerful model querying capabilities of OCL.

<td colspan="4">Code generation (EGL)</td>
<td colspan="4">Model transformation (ETL)</td>

Task-Specific Languages

Epsilon provides several task-specific languages, which use EOL as an expression language. Each task-specific language provides constructs and syntax that are tailored to the specific task. The task-specific languages provided by Epsilon are:

  • Epsilon Transformation Language (ETL): A rule-based model-to-model transformation language that supports transforming many input to many output models, rule inheritance, lazy and greedy rules, and the ability to query and modify both input and output models.
  • Epsilon Validation Language (EVL): A model validation language that supports both intra and inter-model consistency checking, constraint dependency management and specifying fixes that users can invoke to repair identified inconsistencies. EVL is integrated with EMF/GMF and as such, EVL constraints can be evaluated from within EMF/GMF editors and generate error markers for failed constraints.
  • Epsilon Generation Language (EGL): A template-based model-to-text language for generating code, documentation and other textual artefacts from models. EGL supports content-destination decoupling, protected regions for mixing generated with hand-written code. EGL also provides a rule-based coordination language (EGX), that allows specific EGL templates to be executed for a specific model element type, with the ability to guard rule execution and specify generation target location by type/element.
  • Epsilon Wizard Language (EWL): A language tailored to interactive in-place model transformations on model elements selected by the user. EWL is integrated with EMF/GMF and as such, wizards can be executed from within EMF and GMF editors.
  • Epsilon Comparison Language (ECL): A rule-based language for discovering correspondences (matches) between elements of models of diverse metamodels.
  • Epsilon Merging Language (EML): A rule-based language for merging models of diverse metamodels, after first identifying their correspondences with ECL (or otherwise).
  • Epsilon Pattern Language (EPL): A pattern language for matching model elements based on element relations and characteristics.
  • Epsilon Model Generation Language (EMG): A language for semi-automated model generation.
  • Epsilon Flock: A rule-based transformation language for updating models in response to metamodel changes.
  • EUnit: EUnit is a unit testing framework specialized on testing model management tasks, such as model-to-model transformations, model-to-text transformations or model validation. It is based on Epsilon, but it can be used for model technologies external to Epsilon. Tests are written by combining an EOL script and an ANT buildfile.


In addition to the languages above, Epsilon also provides several tools and utilities for working with models.

  • EuGENia: EuGENia is a front-end for GMF. Its aim is to speed up the process of developing a GMF editor and lower the entrance barrier for new developers. To this end, EuGENia enables developers to generate a fully-functional GMF editor only by specifying a few high-level annotations in the Ecore metamodel.
  • Exeed: Exeed is an enhanced version of the built-in EMF reflective tree-based editor that enables developers to customize the labels and icons of model elements simply by attaching a few simple annotations to the respective EClasses in the Ecore metamodel. Exeed also supports setting the values of references using drag-and-drop instead of using the combo boxes in the properties view.
  • ModeLink: ModeLink is an editor consisting of 2-3 side-by-side EMF tree-based editors, and is very convenient for establishing (weaving) links between different models using drag-and-drop.
  • Workflow: Epsilon provides a set of ANT tasks to enable developers assemble complex workflows that involve both MDE and non-MDE tasks.
  • Human Usable Textual Notation: An implementation of the OMG standard for representing models in a human understandable format. HUTN allows models to be written using a text editor in a C-like syntax.