April 9-11th 2014
Churchill College, Cambridge UK


Session Title

The Spoofax Language Workbench in Industry

Session Type Experience Report
Duration 60 minutes
Session Description

The Spoofax Language Workbench provides high-level declarative meta-languages for syntax definition, type systems, static analysis, model transformation, and code generation that abstract from the low-level implementation details of editor services and compilers for domain-specific languages. This gives language designers and engineers the room to focus on design decisions and language semantics. The resulting languages have automatically generated fully featured IDEs with customisable behaviours and presentations such as navigation interfaces (e.g. outline views, context-dependent action menus). Languages can have multiple concrete representations (e.g. textual and graphical) of single abstract models which are automatically synchronised in real-time. The synchronisation is robust recovering from errors during parsing and text-to-model synchronisation, preserves textual and graphical layout in the presence of erroneous texts and models, and provides synchronised editor services such as selection sharing and navigation between editors.

In this experience report we will demonstrate how the Spoofax ecosystem simplifies the process of specifying syntax using SDF3, name analysis using NaBL and type analysis using TS, and transformations and code generation in Stratego.

Throughout the talk, we will identify and discuss design decisions that language engineers are faced with and how each of these affects the resulting language and its tool chain.

Explanations will be driven by the specification in Spoofax of the IDE and compiler for the Green-Marl graph analysis DSL and that of the Flujo executable modelling language and environment. The open source edition of Oracle Labs' Green-Marl IDE and compiler have been developed in a three month internship at Oracle Labs using Spoofax. They are set to become the reference Green-Marl implementation and replace the existing 38KLOC implementation in C/C++ with more extendible and maintainable specifications. Flujo, the language, is based on the Shlaer-Mellor method (Object Oriented Analysis) and has both textual and graphical notations. The modelling environment is built on the Eclipse Platform and is implemented using Spoofax. The Flujo language relies on Spoofax' support for the robust synchronisation of the interactive textual and graphical editors.


Eelco Visser (Delft University of Technology)

Eelco Visser is Antoni van Leeuwenhoek Professor of Computer Science in the Software Engineering Research Group at Delft University of Technology. His research interests include software language engineering, domain-specific languages, model-driven engineering, program transformation, software deployment, verification, and interaction design. With his students he has designed and implemented the Spoofax language workbench, as well as many domain-specific languages, including DSLs for syntax definition (SDF), name binding definition (NaBL), program transformation (Stratego), software deployment (Nix), web application development (WebDSL) and mobile phone applications (mobl).

Vlad Vergu (Delft University of Technology)

Vlad Vergu is a PhD student at Delft University of Technology working under the supervision of Professor Eelco Visser. His research interests include software language engineering, domain specific languages, language workbenches and executable dynamic semantics. Vlad received an MSc from Delft University of Technology, has interned at IBM and Oracle Labs and is the main developer of Oracle's open source Green-Marl IDE and compiler.