EMF modeling with immutable data
Rascal is a meta programming language for source code analysis and transformation. It is a functional programming language: all data is immutable. Rascal is also used as a language workbench for the definition of domain-specific languages (DSLs); languages are described using context-free grammars (concrete syntax) and algebraic data types (abstract syntax).
In model-driven engineering (MDE), the core artifacts of software development are "models" which are similar abstract representations of languages. Models conform to meta models, which describe arbitrary graph structures (i.e. there can be cross-references). The de facto standard modeling framework is the Eclipse Modeling Framework (EMF). The goal of this project is to explore a bridge between the graph-structured, mutable world of EMF and the tree-based, immutable world of Rascal. You will design a bridge that will allow Rascal programs to analyze, transform and store EMF models, thus bringing Rascal's language workbench features to EMF, and in turn leveraging the EMF eco-system in the context of Rascal.
In particular this problem involves:
- An exploration of alternative ways of dealing with (cross-)references in languages with only immutable data.
- Based on this analysis, you will design a mapping/bridge/binding between Rascal data and EMF data.
- You will evaluate your approach by porting one ore more small DSLs built with Rascal to support the EMF binding, e.g. by showing how EMF based tooling can be applied to Rascal implemented DSLs.
- Paige et al., Metamodelling for Grammarware Researchers, SLE'12.
- Klint and Van der Storm, Model Transformation with Immutable Data, ICMT'16.
Contact: Tijs van der Storm