Some remarks on metaDepth's eol syntax. --------------------------------------- -- Nodes: // define all your abstract classes at the top of your file! abstract Node myNode // abstract class. Node subNode: SuperNode1, SuperNode2 // inheritance -- Boolean values: true false -- Primitive types: boolean/int/double/String (in metadepth) vs Boolean/Integer/Real/String (in eol) -- Cardinalities: [*] [1] [0..1] [2..10] -- Printing: .print(); // print object .println(); // print object and newline -- Some operations: + : String // string concatenation .allInstances() : Set // get all instances of a given type .id() : String // get identifier name .name(String); // rename element ..isDefined() : Boolean // check if an optional parameter is set -- for-loop, while-loop and if/else for (iter in set) { } while (condition) { } if (condition) { } else { } .get("").setSet(false); // set an optional parameter to Null delete ; // REMARK: also remove all links to the (statement above) new ; // field introspection .fields; // get all fields of the .getField(); // gets field by String name .getType(); // gets field type .get(); // gets field value .get(); // short for .getField().get() .setFieldValue(value); // sets field value (in case of a non-primitive value) .refSetValue(, value); // sets field value (in case of a primitive value) .isDataType(); // returns true if field is int/double/boolean/... Note that doing operation on types does not work well. This also includes instances. So don't do operations straight on element variables, e.g.,: stateA. A particular example is: stateA = stateA // will return false -- EOL manual: http://www.eclipse.org/epsilon/doc/book