----------------------------------------------------------------------- International Workshop on Reduction Strategies in Rewriting and Programming (WRS 2001) held in conjunction with RTA 2001 in Utrecht, The Netherlands, May 26, 2001 ----------------------------------------------------------------------- INVITED TALK A Survey of Strategies in Program Transformation Systems by Eelco Visser Universiteit Utrecht Institute of Information and Computing Sciences Abstract Program transformation is used in a wide range of applications including compiler construction, optimization, program synthesis, refactoring, software renovation, and reverse engineering. Program transformation entails some kind of manipulation of the concrete or abstract syntax tree that represents the program. Implementation of program transformation in standard programming paradigms suffers from intertwining of logic, i.e., the basic transformation steps, and control over the application of basic transformations. This intertwining induces programming overhead, makes transformations hard to understand and limits reusability. The paradigm of transformation strategies overcomes these problems by separating logic and control. This paper surveys the use of strategies in program transformation systems. After an analysis of the need for strategies in program transformation, an analysis of the basic elements of a strategy system are discussed and the choices in the design of a strategy language are considered. Several styles of strategy systems as provided in existing languages, from strategy annotations in OBJ to generic strategies in Stratego, are then analyzed. The appendices discuss the strategy systems in a number of existing systems. -----------------------------------------------------------------------