Paper about refactoring support for Spoofax accepted at LDTA'12:

Maartje de Jonge, Eelco Visser. A Language Generic Solution for Name Binding Preservation in Refactorings. In Suzana Andova, Anthony M. Sloane, editors, Workshop on Language Descriptions, Tools, and Applications, Proceedings. 2012.

Abstract: The implementation of refactorings for new languages requires considerable effort from the language developer. We aim at reducing that effort by using language generic techniques. This paper focuses on behavior preservation, in particular the preservation of name bindings. Given an existing name analysis, we implement a language generic technique to detect name binding violations. Some languages offer the possibility to access global variables using qualified names. As a refinement to violation detection, we show that name analysis can be defined as a reusable traversal strategy that can be applied to restore name bindings by creating qualified names. These techniques offer an efficient and reliable solution; the semantics of the language is implemented only once, with the compiler being the single source of truth. We evaluate our approach by implementing a language generic rename refactoring, which we apply to different languages.

Paper based on work of master's thesis work of Tobi Vollebregt accepted at LDTA'12:

Tobi Vollebregt, Lennart C. L. Kats, and Eelco Visser. Declarative Specification of Template-Based Textual Editors. In Suzana Andova, Anthony M. Sloane, editors, Workshop on Language Descriptions, Tools, and Applications, Proceedings. 2012.

Abstract: Syntax discoverability has been a crucial advantage of structure editors for new users of a language. Despite this advantage, structure editors have not been widely adopted. Based on immediate parsing and analyses, modern textual code editors are also increasingly syntax-aware: structure and textual editors are converging into a new editing paradigm that combines text and templates. Current text-based language workbenches require redundant specification of the ingredients for a template-based editor, which is detrimental to the quality of syntactic completion, as consistency and completeness of the definition cannot be guaranteed.

In this paper we describe the design and implementation of a specification language for syntax definition based on templates. It unifies the specification of parsers, unparsers and template-based editors. We evaluate the template language by application to to two domain-specific languages used for tax benefits and mobile applications.

Following the collaboration on SugarJ with the Marburg team of Klaus Ostermann, the Software Language Design and Engineering Group at TU Delft has an opening for a researcher (3 year postdoc or 4 year PhD).

Project Summary:

Domain-specific languages (DSLs) are emerging as mainstream technique to increase the level of abstraction in software engineering. We propose to develop techniques for deep integration of domain-specific languages into host languages through language libraries that define domain-specific extensions and can be imported into programs like regular libraries, enabling the definition and use of DSLs without deploying a new compiler or IDE. A language library describes all aspects of a language embedding, including syntax, static analysis, translation to the host language, and its integration into the IDE.

A key concern in the construction of an IDE is its responsiveness. Most language engineering tools have been designed around a dichotomy between meta-programming and programming, and rely on batch-based, whole-program compilation techniques, giving rise to full recompilation of language compositions and their editors in the context of language libraries. Ensuring a responsive IDE for language libraries, requires new techniques for online language composition.

Deep integration of DSLs raises various research questions from the perspective of language design. Classical issues of module systems, separate checking, information hiding, composability, self-applicability and recursion, need new answers when the modules to be composed are language libraries. Language libraries also enable the design of a minimal extensible core language from which a full language can be boot-strapped.

We will develop a language libraries framework by building on the Spoofax Language Workbench, validating it with a collection of language libraries for web programming.

If you are interested in the position please contact me.

Karl Kalleberg has ported the command-line interpreter for Stratego to Spoofax:

Good news, boys and girls! If you happen to be a Stratego and/or Spoofax user, you might appreciate that I finally took some time to piece together an interactive command line interpreter—-a REPL—-for Spoofax.

This should improve experimentation and debugging. It is not clear from Karl's post to what extent the REPL integrates with ones 'Spoofax code'. Is it possible to call the analysis function used in the editor, or use origin tracking to the text of an editor? Looking forward to further reports and experiments.

Update: It turns out I had mis-interpreted Karl's post. The REPL was an in-the-shell command line interpreter, much like the stratego-shell of yore, but now JVM-based. However, an integration of that shell in Eclipse-Spoofax is in the works.

On Wednesday, January 11, 2012, Zef Hemel defends his PhD thesis at TU Delft. Quoting the introduction:

The promise of model-driven engineering is to reduce the development and maintenance effort of software by developing at a higher-level of abstraction through the use of domain-specific languages (DSLs). Domain-specific languages, as opposed to general-purpose languages, are software languages that focus on a specific problem domain, e.g. insurance, database querying, grammars or workflow.

The research in this thesis is conducted as part of the MoDSE (Model- Driven Software Evolution) project. The goal of the MoDSE project is to develop a systematic approach to model-driven software development using domain-specific languages. This approach includes methods, techniques, and underlying tool support. The group in which the research is conducted (the Software Engineering Research Group at Delft University of Technology) is building and evolving tools to simplify the development of domain-specific languages, including SDF [Heering et al., 1989] and SGLR [Visser, 1997a] for parsing, Stratego/XT [Visser, 2004, Bravenboer et al., 2008] for program transformation and Spoofax [Kats and Visser, 2010a] for building IDE (Integrated Development Environment) plug-ins for the developed languages.

The goal of the research is to explore the DSL design space and to develop techniques to simplify the implementation of DSLs. The research is conducted through case studies in DSL design, using tools developed as part of the MoDSE project.

The thesis includes chapters on

Update: Dr. Zef's report on the successful defense of his thesis.