Using Sphinx to create multi-language multi-view DSL tool environments
Building Domain-Specific Languages (DSLs) has been a great success in the software engineering community. Indeed, frameworks like EMF, Xtext, GMF, and Graphiti enable DSL developers to create or generate complex metamodels, complete language interpreters and full-blown editors (textual or graphical), sometimes with only a few clicks. However, in real-world systems development, applications need to be modeled through multiple orthogonal but interdependent views, each of which is focused on a specific aspect of the system. Sometimes, this involves the usage of different DSLs, sometimes a combination of textual, graphical and form-based editing, and sometimes even both. This raises common problems of synchronization between editors, and how one can maintain consistency across different semantic models when their graphical, textual, and form-based representations are edited.
In this session, we will demonstrate how the modeling tool platform Sphinx can be leveraged to address those challenges. We will firstly give an overview of the most essential Sphinx features and show how they can be used to bootstrap integrated tool experiences for different DSLs. Secondly, we will cover a variety of use cases showing how Sphinx greatly supports multiple view scenarios, including: synchronized editing of DSL instances with form-based, tree-based and Graphiti-based graphical editors, synchronizing such DSL representations with semantic models behind Xtext DSLs, embedding Xtext editors in form editors, partial model editing with Xtext. The good news is that none of these capabilities are tied to any specific DSL. Instead, they can be resued and combined to create powerful multi-DSL multi-view tool chains for a great variety of system development use cases.