I work in the Programming Languages Research Group at TU Delft and also maintain collaborations with the Software Technology Group at TU Darmstadt.

Research projects

I am the lead developer of the extensible programming language SugarJ, which allows programmers to flexibly integrate new syntax, static analyses, and editor support by library import. SugarJ extensions are scoped via the module system and multiple extensions compose if activated in the same scope. Since SugarJ allows flexible and principled domain abstraction, it is particularly well-suited for the embedding of domain-specific languages.

My general research interests include: extensible programming languages, domain-specific languages, language design, language tooling, declarative parsing methodologies, module systems, type systems, and static analysis. I am involved in the following projects:

  • SugarJ: Library-based language extensibility.
  • Evolute: We aim to improve the maintainability of software systems by migration toward embedded DSLs. This projects builds on previous work on extensible languages and SugarJ.
  • Pragmatics of type systems: Automated soundness verification and efficient type check for declaratively defined type systems.
  • Spoofax: Language workbench that derives full-featured Eclipse-based tool support for textual domain-specific languages from declarative language specifications.
  • Layout-sensitive parsing: Declarative specification of layout-sensitive languages that, for example, apply the offside rule.
  • Decorated trees: Use syntax trees as a generic intermediate code representation that can be decorated to denote desired IDE behavior. We use this intermediate representation to disentangle the rendering performed by IDEs from language-specific processing.

Former research projects: