Epsilon Comparison Language
ECL is a hybrid, rule-based language for comparing homogeneous or heterogeneous models. ECL can be used to establish the correspondences on which models can be merged using the merging language of Epsilon, or for transformation testing.
Features
Compare homegeneous models
Compare heterogeneous models
Complete specification of the comparison logic
Export comparison results to EML for merging
Export comparison results to a custom model/format
Declarative rules with imperative bodies
Automated rule execution
Lazy and greedy rules
Multiple rule inheritance
Guarded rules
Features inherited from EOL
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
Reference
Chapter 9 of the
Epsilon book provides a complete
reference of the syntax and semantics of ECL.