The mission of the Software Language Design and Engineering Lab at TU Delft is to enable software engineers to effectively design, implement, and apply domain-specific software languages (DSLs).
In the language engineering track, we investigate the automatic derivation of efficient, scalable, incremental compilers and effective IDEs from high-level, declarative language definitions.
Important results are the Stratego program transformation language, based on the paradigm of rewriting with programmable strategies, dynamic rewrite rules for context-sensitive transformation, aspects to support portability. We developed the Spoofax Language Workbench, an Eclipse IDE plugin for developing languages and their IDEs, and extended the scannerless generalized LR parsing algorithm with error recovery. Other innovative ingredients of Spoofax are support for test-driven language development, generation of debuggers for DSLs. The Spoofax Name Binding Language provides a declarative description of name binding and scope rules of programming languages. A new line of research is the generation of Web IDEs — enabling language-aware code editing in the browser — from language definitions.
In the language design track we investigate approaches to the systematic design of DSLs with an optimal tradeoff between expressivity, completeness, portability, coverage, and maintainability.
Important results are the MetaBorg approach to embedding and assimilation of DSLs in a general purpose host language with applications to the prevention of injection attacks and the embedding of byte code in Java. As case study in systematic DSL design, we designed the WebDSL web programming language, with sub-languages for data modeling, user interface templates, access control, and data validation, according to the paradigm of separation of concerns and linguistic integration, and applying code generation by model transformation approach. Recently we developed the Mobl language, applying lessons from WebDSL in a language for mobile web applications. In 2012 we started a collaboration with Oracle Labs to evaluate the applicability of the Spoofax workbench to DSLs under development at Oracle and Stanford.
All results of the lab are available for application, reproduction, and further research through open source software distributions or open web services. Furthermore, we emphasize development of research software to the extent that it is usable in production systems, since that is the only true test for conceptual ideas. This requires engineering work beyond prototypes sufficient to merit publication, but the resulting systems provide fertile ground for future research. For example, the Spoofax language workbench is bootstrapped, i.e. implemented in itself. WebDSL and Mobl are production languages built with Spoofax. The Researchr digital library and the YellowGrass issue tracker are built with WebDSL.