MontiCore: Modular Development of Textual Domain Specific Languages
This work addresses the problem of reducing redundancy and improving reuse in DSL development for software engineers, though it appears incremental by adapting existing modularity principles to a new context.
The paper tackles the challenge of efficiently developing domain-specific languages (DSLs) by applying modularity concepts like inheritance and embedding, enabling the composition of new languages from existing ones with tool support for parsing, editing, and code generation.
Reuse is a key technique for a more efficient development and ensures the quality of the results. In object technology explicit encapsulation, interfaces, and inheritance are well known principles for independent development that enable combination and reuse of developed artifacts. In this paper we apply modularity concepts for domain specific languages (DSLs) and discuss how they help to design new languages by extending existing ones and composing fragments to new DSLs. We use an extended grammar format with appropriate tool support that avoids redefinition of existing functionalities by introducing language inheritance and embedding as first class artifacts in a DSL definition. Language embedding and inheritance is not only assisted by the parser, but also by the editor, and algorithms based on tree traversal like context checkers, pretty printers, and code generators. We demonstrate that compositional engineering of new languages becomes a useful concept when starting to define project-individual DSLs using appropriate tool support.