Methods and Techniques for the Design and Implementation of Domain-Specific Language

Zef Hemel

Promotor: Prof.dr. A. van Deursen (TUD)
Co-promotor: Dr. E. Visser (TUD)
Technische Universiteit Delft
Date: 11 January, 2012

Summary

Domain-Specific Languages (DSLs) are programming language aimed at a particular problem domain, e.g. banking, database querying or website page lay-outs. Through the use of high-level concepts, a DSL raises the level of abstraction and expressive power of the programmer, and reduces the size of programs.

This dissertation covers various aspects of the design and implementations of such DSLs. Throughout the project, two DSLs were developed: WebDSL, a language for rapid web application development, and mobl, a DSL for mobile application development. Using these two case studies, the dissertation explores the design space, as well as techniques developed to implement the compiler and IDE for such DSLs.

The general design principle applied is syntactic integration and separation of concerns. Rather than using a number of DSLs to build a single application, our approach is to develop a single, integrated DSL that can be used to develop the entire application, while still enabling clear separation of concerns. The result of this integration is static verification — the ability to instantly be notified when your program is inconsistent, without having to run it.

The dissertation covers five aspects of DSL design and implementation: (1) Verification, the ability to verify applications written using the DSL; (2) Coverage, how to ensure that a DSL enables its user to express what he needs to express; (3) Abstractions, the use as well as the definition of abstractions in a DSL; (4) Code generation, techniques for efficiently generating executable code from a DSL; (5) Portability, the ability to generate code from a DSL that is runnable on multiple platforms.