Skip to content

A Stratego Bibliography

The original publication on Stratego appeared in ICFP'981 and introduced named rewrite rules and a language of strategy combinators with an operational semantics. An important aspect of the design of Stratego is the separation of the language in a core language2 of strategy combinators and a high-level 'sugar' language of rewrite rules that can be desugared to the core language. This is still the way that the Stratego compiler is organized.

The original also introduced contextual terms. These where eventually replaced by dynamic rewrite rules3. The paper about dynamic rules3 also provides a comprehensive overview of Stratego and its operational semantics.

Stratego and its ecosystem are described in a number of system description papers, including Stratego 0.54, Stratego/XT 0.165, Stratego/XT 0.176

Recently, a gradual type system was designed for Stratego7. This design and its incremental compiler8 are the basis for the Stratego2 version of the language.


  1. Eelco Visser, Zine-El-Abidine Benaissa, and Andrew P. Tolmach. Building program optimizers with rewriting strategies. In Matthias Felleisen, Paul Hudak, and Christian Queinnec, editors, Proceedings of the third ACM SIGPLAN international conference on Functional programming, 13–26. Baltimore, Maryland, United States, 1998. ACM. URL:, doi:10.1145/289423.289425

  2. Eelco Visser and Zine-El-Abidine Benaissa. A core language for rewriting. Electronic Notes in Theoretical Computer Science, 15:422–441, 1998. URL:, doi:10.1016/S1571-0661(05)80027-1

  3. Martin Bravenboer, Arthur van Dam, Karina Olmos, and Eelco Visser. Program transformation with scoped dynamic rewrite rules. Fundamenta Informaticae, 69(1-2):123–178, 2006. URL:

  4. Eelco Visser. Stratego: a language for program transformation based on rewriting strategies. In Aart Middeldorp, editor, Rewriting Techniques and Applications, 12th International Conference, RTA 2001, Utrecht, The Netherlands, May 22-24, 2001, Proceedings, volume 2051 of Lecture Notes in Computer Science, 357–362. Springer, 2001. URL:, doi:10.1007/3-540-45127-7_27

  5. Martin Bravenboer, Karl Trygve Kalleberg, Rob Vermaas, and Eelco Visser. Stratego/XT 0.16: components for transformation systems. In John Hatcliff and Frank Tip, editors, Proceedings of the 2006 ACM SIGPLAN Workshop on Partial Evaluation and Semantics-based Program Manipulation, 2006, Charleston, South Carolina, USA, January 9-10, 2006, 95–99. ACM, 2006. URL:, doi:10.1145/1111542.1111558

  6. Martin Bravenboer, Karl Trygve Kalleberg, Rob Vermaas, and Eelco Visser. Stratego/XT 0.17. A language and toolset for program transformation. Science of Computer Programming, 72(1-2):52–70, 2008. URL:, doi:10.1016/j.scico.2007.11.003

  7. Jeff Smits and Eelco Visser. Gradually typing strategies. In Ralf Lämmel, Laurence Tratt, and Juan de Lara, editors, Proceedings of the 13th ACM SIGPLAN International Conference on Software Language Engineering, SLE 2020, Virtual Event, USA, November 16-17, 2020, 1–15. ACM, 2020. URL:, doi:10.1145/3426425.3426928

  8. Jeff Smits, Gabriël Konat, and Eelco Visser. Constructing hybrid incremental compilers for cross-module extensibility with an internal build system. Programming Journal, 4(3):16, 2020. URL:, doi:10.22152/

Last update: May 31, 2024
Created: May 31, 2024