The Internet Of Things example illustrate the composition of Languages.
Based on a Language able to define a System with boards and services, we merge another Language to describe interfaces for theses services, the Lua Language to define the implementation the services and an Activity Language to define the behavior of the System

package fr.inria.diverse.iot2

// This is a simple comment
language Idl4Emf {
  syntax "/org.csu.idl.idlmm/model/IDLMM.ecore"
  exactType Idl4EmfMT

language ActivityDiagram {
  syntax "/org.xtext.activitydiagram.model/model/activitydiagram.ecore"
  with org.xtext.activitydiagram.semantics.*
  exactType ActivityDiagramMT

 * This is another one
language Lua {
  syntax "/org.xtext.lua/model/generated/Lua.ecore"
  with org.xtext.lua.semantics.*
  exactType LuaMT

language IoT2 {
  syntax "/fr.inria.diverse.iot2.model/model/IoT2.ecore"
  slice Idl4Emf
    on ["OperationDef", "PrimitiveDef"]
    renaming { "idlmm" to "iot2" }
  merge Lua renaming { "lua" to "iot2" }
  merge ActivityDiagram renaming { "activitydiagram" to "iot2" }
  with fr.inria.diverse.iot2.OpaqueActionAspect
  with fr.inria.diverse.iot2.OperationDefAspect
  with fr.inria.diverse.iot2.ExpressionAspect
  exactType IoT2MT


Language workbench

clone the git repo and import the following projects from

  • org.csu.idl.idlmm
  • org.xtext.activitydiagram.model
  • org.xtext.activitydiagram.semantics
  • org.xtext.lua
  • org.xtext.lua.semantics
  • fr.inria.diverse.iot2.model
  • fr.inria.diverse.iot2