Epsilon Pattern Language

EPL is a pattern matching language built on top of EOL. EPL provides facilities for performing mattern matching on a model and produces a match model than can be used with the other Epsilon langauges in order to query, evaluate, tranform, etc. the found matches. A common scenario is to use the pattern matches as input for model transformations.


  • Match elements from one or many models
  • Ability to query/navigate the source models
  • Declarative patterns with imperative bodies
  • Automated pattern execution
  • Filtering of pattern roles
  • Support for negative, optional and active roles
  • Guarded patterns
  • Support for simultaneously accessing/modifying many models of (potentially) different metamodels
  • All the usual programming constructs (while and for loops, statement sequencing, variables etc.)
  • Support for those convenient first-order logic OCL operations (select, reject, collect etc.)
  • Ability to create and call methods of Java objects
  • Support for dynamically attaching operations to existing meta-classes and types at runtime
  • Support for cached operations
  • Support for extended properties
  • Support for user interaction
  • Ability to create reusable libraries of operations and import them from different Epsilon (not only EOL) modules

Examples and Screencasts


Chapter 11 of the Epsilon book provides a complete reference of the syntax and semantics of EPL.