The use of domain-specific languages DSLs has become a successful technique in the development of complex systems. Nevertheless, the construction of this type of languages is time-consuming and requires highly-specialized knowledge and skills. An emerging practice to facilitate this task is to enable reuse through the definition of language modules which can be later put together to build up new DSLs. Still, the identification and definition of language modules are complex and error-prone activities, thus hindering the reuse exploitation when developing DSLs. In this paper, we propose a computer-aided approach to i identify potential reuse in a set of legacy DSLs; and ii capitalize such potential reuse by extracting a set of reusable language modules with well defined interfaces that facilitate their assembly. We validate our approach by using realistic DSLs coming out from industrial case studies and obtained from public GitHub repositories.
['David Méndez-Acuña', 'José A. Galindo', 'Benoit Combemale', 'Arnaud Blouin', 'Benoit Baudry', 'Gurvan Le Guernic']
Reverse-Engineering Reusable Language Modules from Legacy Domain-Specific Languages