Skip to content

kermeta

Fábio Nogueira edited this page Mar 22, 2016 · 10 revisions

Kermeta, a Kernel Meta-Modeling language and environment, is an EMF extension whose goal is to complement Eclipse off-the-shelf tools to obtain a complete environment for such DSMLs, including interpreters, compilers, pretty-printers and customizable editors.

Kermeta has been designed to easily extend meta-models with many different concerns (such as static semantics, dynamic semantics, model transformations, connection to concrete syntax, etc.) expressed in heterogeneous languages. A meta-language such as the Meta Object Facility (MOF) standard [18] indeed already supports an object-oriented definition of meta-models in terms of pack- ages, classes, properties and operation signatures, as well as model-specific con- structions such as containments and associations between classes. MOF does not include however concepts for the definition of constraints or operational seman- tics (operations in MOF do jot contain bodies). Kermeta can thus be seen as an extension of MOF with an imperative action language for specifying constraints and operation bodies at the meta-model level. To do that, Kermeta uses aspects. The idea is that the extended version of EMOF meta-model, referred to as Executable EMOF, would correspond to a new M3-Level meta-model defining a modeling language that could be used to specify meta-models containing meta-data and meta-operations.

Kermeta complements EMOF with imperative and statically-typed action specifications, which include the following control structures:

  • Conditionals, loops and blocks.
  • Local variable declarations.
  • Call expressions for reading variables and properties or calling operations.
  • Assignment expressions for assigning variables and properties.
  • Literals expressions for primitive types,.
  • Exception handling mechanism: exceptions can be raised and caught by rescue blocks.
  • A limited form of lambda expressions which correspond to the implementation of OCL-like iterators such as collect, select or reject on collections.

References

Clone this wiki locally