epsilon is an actively used programming language. EOL is an imperative programming language for creating, querying and modifying EMF models. You can think of it as a mixture of Javascript and OCL, combining the best of both worlds. As such, it provides all the usual imperative features found in Javascript (e.g. statement sequencing, variables, for and while loops, if branches etc.) and all the nice features of OCL such as those handy collection querying functions.

?Years Old ?Users ?Jobs
  • the epsilon website
  • file extensions for epsilon include eol
  • Have a question about epsilon not answered here? Email me and let me know how I can help.

Example code from the web:

var m : new Model;

m.name = "m";

// Create five packages
for (i in 1.to(5)){
  var package : Package = new Package;
  package.name = "p" + i;
  package.package = m;

  // Create three classes in each package
  for (j in 1.to(3)) {
    var class : Class = new Class;
    class.name = "c" + i + "" + j;
    class.isAbstract = false;
    class.package = package;

// Assign random supertypes to the classes created
for (c in Class.allInstances) {
  c.extends = Class.allInstances.random();

Last updated August 9th, 2020

Edit epsilon on GitHub