Strategies for Program Transformation

Presented by Eelco Visser

April 14, 2002, full day

Abstract :

Program transformation has applications in many areas of software engineering including compilation, optimization, refactoring, program synthesis, software renovation, and reverse engineering. Program transformation increases programmer productivity by automating programming tasks, thus enabling programming at a higher-level of abstraction, and increasing maintainability and re-usability.

This tutorial gives an introduction to principles and practice of program transformation with rewriting strategies. Programmable rewriting strategies allow the separation of transformation rules from the strategies for applying them, thus providing support for concise, declarative, and reusable specification of program transformation systems.

The tutorial discusses all aspects of transformation with strategies; after a taxonomy of program transformation and a discussion of program representation, it covers specification of program transformations with rewrite rules, combinators for composing rewriting strategies, in particular combinators for generic traversal, exchange of context-dependent information through scoped dynamic rewrite rules, pragmatics of programming with strategies in Stratego, and applications of these techniques.