Tiger in Stratego ----+++ An Experiment in Compilation by Transformation Tiger in Stratego is a framework for implementing a compiler for the [[Tiger language]] in the program transformation language [[Stratego.StrategoLanguage][Stratego]]. The goal of the project is to experiment with the use of program transformation techniques in the construction of compilers and other language processing tasks, and to illustrate these techniques in education. The framework is used in two courses at Utrecht University: * [[http://www.cs.uu.nl/groups/ST/twiki/bin/view/Hpc/][High-Performance Compilers]] * [[http://www.cs.uu.nl/groups/ST/twiki/bin/view/Pt][Program Transformation]] In these courses [[Transform.ProgramTransformation][program transformation]] techniques are studied in the context of compilation and [[Transform.GenerativeProgramming][generative programming]]. The experiments have lead to a number of techniques for concise specification of program transformations. The following publications use Tiger or components of the Tiger compiler as an example. * [[Stratego.ScopedDynamicRewriteRules][Scoped Dynamic Rewrite Rules]] * [[Stratego.BuildingInterpretersWithRewritingStrategies][Building Interpreters with Rewriting Strategies]] * [[Stratego.ImplementationOfInliningInStratego][Implementation of Inlining in Stratego]] * [[Stratego.RewritingStrategiesForInstructionSelection][Rewriting Strategies for Instruction Selection]] * [[Stratego.MetaProgrammingWithConcreteObjectSyntax][Meta Programming with Concrete Object Syntax]] * [[Stratego.Strategies for Source to Source Constant Propagation][Strategies for Source to Source Constant Propagation]] The framework is freely available for experimentation: * [[Download and Installation]] This web provides an overview of the compiler. The following pages provide different views of the compiler: * [[Tiger compiler]] * [[Compiler architecture]] -- data-flow diagrams depicting the architecture of the compiler * [[Compiler components]] -- index of the components comprising the compiler * [[Compiler packages]] -- the distribution of the compiler is divided into several separate packages Usage * [[How to test the Tiger compiler]] * [[Extending the Tiger compiler]]