Generative Programming and Component Engineering

Building Java Transformations with Stratego/XT

Martin Bravenboer, Utrecht University

Karl Trygve Kalleberg, University of Bergen

Eelco Visser, Utrecht University

Monday, October 23rd, from 13:30 to 17:00


This tutorial gives an overview of techniques for program transformation, illustrated through the Stratego/XT program transformation system. We explain the general architecture of transformation systems, and how Stratego/XT is used to assemble such systems from components. We introduce a set of ready made components for Java transformation, and show how to program custom transformation components using Stratego. In particular, we show how to express local transformations using rewrite rules and strategies and how context-sensitive transformations can be expressed easily using dynamic rewrite rules. All techniques and language features are illustrated with implementations of transformations on Java programs, that show how to apply all introduced techniques in practice.

Level: Introductory

Required Knowledge

Basic understanding of compilers, parsing and program representation using abstract syntax trees is an advantage, but we briefly summarize the basics and ignore the technical details of parsing, since we focus on application of program transformation to a particular programming language, i.e. Java, for which all required parsing and pretty-print support is already available.

Speaker profiles

Martin Bravenboer is a PhD student at Utrecht University, researching language extensions and program transformation.

Karl Trygve Kalleberg is a PhD student at the University of Bergen, researching program transformation systems and language extensions for program transformation.

Eelco Visser is assistant professor at Utrecht University, researching program transformation and software configuration. He is the principal designer and developer of the Stratego/XT program transformation system.