Transformation Mechanics
Program-Transformation.Org: The Program Transformation Wiki
Jonne van Wijngaarden and
Eelco Visser.
Program Transformation Mechanics. A Classification of Mechanisms for Program Transformation with a Survey of Existing Transformation Systems. Technical Report UU-CS-2003-048. Institute of Information and Computing Sciences, Utrecht University. (
pdf)
Abstract
Transformation techniques are spreading from application in compilers to
general use in generative programming and document processing.
Since transformation requires operations such as pattern matching,
generic structure traversal, and querying, which are not normally
provided by general-purpose programming languages, many tools have
been developed to provide higher-level support for the implementation of
transformations. These tools come in many flavors each with their own merits
and based on different paradigms, which makes comparison difficult.
In this paper, we consider transformation from the point of view of
mechanics and develop a classification of transformation
mechanisms that provides a reference for comparing tools developed for
different applications, using different implementations, and in
different programming paradigms. To do so we distinguish three
fundamental aspects of transformation mechanisms: scope,
direction, and stages. We apply this classification
in a discussion of design patterns for transformation,
characterization of several typical transformations, and a systematic
comparison of eleven representative transformation tools.