Stratego ALanguage For Program Transformation Based On Rewriting Strategies
Stratego -- Strategies for Program Transformation
E. Visser.
Stratego: A language for program transformation based on rewriting strategies. System description of Stratego 0.5. In A. Middeldorp, editor, Rewriting Techniques and Applications (RTA'01), volume 2051 of Lecture Notes in Computer Science, pages 357--361. Springer-Verlag, May 2001.
Introduction
Program transformation is used in many areas of software
engineering. Examples include compilation, optimization,
synthesis, refactoring, migration, normalization and
improvement \cite{OSPT}. Rewrite rules are a natural
formalism for expressing single program transformations.
However, using a standard strategy for normalizing a program
with a set of rewrite rules is not adequate for implementing
program transformation systems. It may be necessary to apply
a rule only in some phase of a transformation, to apply rules
in some order, or to apply a rule only to part of a
program. These restrictions may be necessary to avoid
non-termination or to choose a specific path in a
non-confluent rewrite system.
Stratego is a language for the specification of program
transformation systems based on the paradigm of rewriting
strategies. It supports the separation of strategies from
transformation rules, thus allowing careful control over the
application of these rules. As a result of this separation,
transformation rules are reusable in multiple different
transformations and generic strategies capturing patterns of
control can be described independently of the transformation
rules they apply. Such strategies can even be formulated
independently of the object language by means of the generic
term traversal capabilities of Stratego.
In this short paper I give a description of version 0.5 of the
Stratego system, discussing the features of the language, the library, the compiler and some of the applications that
have been built. Stratego is
available as free software under the GNU
LGPL from
http://www.stratego-language.org.
Online
Bib entry
@InProceedings{Vis01.rta,
author = {Eelco Visser},
title = {Stratego: {A} Language for Program Transformation
based on Rewriting Strategies. {S}ystem Description
of {Stratego} 0.5},
booktitle = {Rewriting Techniques and Applications (RTA'01)},
pages = {357--361},
year = 2001,
editor = {A. Middeldorp},
volume = 2051,
series = {Lecture Notes in Computer Science},
month = {May},
publisher = {Springer-Verlag}
}