skip to main content
article

Stratego/XT 0.17. A language and toolset for program transformation

Published: 01 June 2008 Publication History

Abstract

Stratego/XT is a language and toolset for program transformation. The Stratego language provides rewrite rules for expressing basic transformations, programmable rewriting strategies for controlling the application of rules, concrete syntax for expressing the patterns of rules in the syntax of the object language, and dynamic rewrite rules for expressing context-sensitive transformations, thus supporting the development of transformation components at a high level of abstraction. The XT toolset offers a collection of flexible, reusable transformation components, and tools for generating such components from declarative specifications. Complete program transformation systems are composed from these components. This paper gives an overview of Stratego/XT 0.17, including a description of the Stratego language and XT transformation tools; a discussion of the implementation techniques and software engineering process; and a description of applications built with Stratego/XT.

References

[1]
Appel, A.W., Modern Compiler Implementation in ML. 1998. Cambridge University Press.]]
[2]
Bagge, O.S., Kalleberg, K.T., Haveraaen, M. and Visser, E., Design of the CodeBoost transformation system for domain-specific optimisation of C++ programs. In: Binkley, D., Tonella, P. (Eds.), 3rd IEEE Itl Workshop on Source Code Analysis and Manipulation, IEEE Comp. Soc. Press, Amsterdam, The Netherlands. pp. 65-74.]]
[3]
Balland, E., Brauner, P., Kopetz, R., Moreau, P.-E. and Reilles, A., Tom: Piggybacking rewriting on java. In: Lecture Notes in Computer Science, Springer-Verlag.]]
[4]
Baxter, I.D., Design maintenance systems. Communications of the ACM. v35 i4. 73-89.]]
[5]
Baxter, I.D., Pidgeon, C. and Mehlich, M., DMS: Program transformations for practical scalable software evolution. In: ICSE ¿04: Proceedings of the 26th International Conference on Software Engineering, IEEE Computer Society, Washington, DC, USA. pp. 625-634.]]
[6]
Borovanský, P., Kirchner, C. and Kirchner, H., Controlling rewriting by rewriting. In: Meseguer, J. (Ed.), Electronic Notes in Theoretical Computer Science, vol. 4. Elsevier Science Publishers, Asilomar, Pacific Grove, CA.]]
[7]
Boyle, J.M. and Dritz, K.W., An automated programming system to facilitate the development of quality mathematical software. In: Information Processing, vol. 74. North-Holland, Amsterdam. pp. 542-546.]]
[8]
Boyle, J.M., Harmer, T.J. and Winter, V.L., The TAMPR program transformation system: Simplifying the development of numerical software. In: Arge, E., Bruaset, A.M., Langtangen, H.P. (Eds.), Modern Software Tools for Scientific Computing, Birkhäuser Boston Inc., Cambridge, MA, USA. pp. 353-372.]]
[9]
van den Brand, M.G.J., de Jong, H., Klint, P. and Olivier, P., Efficient annotated terms. Software, Practice & Experience. v30 i3. 259-291.]]
[10]
M. Bravenboer, Connecting XML processing and term rewriting with tree grammars, Master's Thesis, Utrecht University, Utrecht, The Netherlands, November 2003]]
[11]
Bravenboer, M., de Groot, R. and Visser, E., MetaBorg in action: Examples of domain-specific language embedding and assimilation using Stratego/XT. In: Lämmel, R., Saraiva, J. (Eds.), Lecture Notes in Computer Science, vol. 4143. Springer Verlag, Braga, Portugal. pp. 297-311.]]
[12]
Bravenboer, M., Kalleberg, K.T., Vermaas, R. and Visser, E., Stratego/XT 0.16. Components for transformation systems. In: ACM SIGPLAN 2006 Workshop on Partial Evaluation and Program Manipulation, ACM SIGPLAN, Charleston, South Carolina.]]
[13]
Bravenboer, M., Tanter, E. and Visser, E., Declarative, formal, and extensible syntax definition for AspectJ. A case for scannerless generalized-lr parsing. In: Cook, W.R. (Ed.), Proceedings of the 21st ACM SIGPLAN Conference on Object-Oriented Programing, Systems, Languages, and Applications, ACM Press. pp. 209-228.]]
[14]
Bravenboer, M., van Dam, A., Olmos, K. and Visser, E., Program transformation with scoped dynamic rewrite rules. Fundamenta Informaticae. v69. 1-56.]]
[15]
Bravenboer, M., Vermaas, R., Vinju, J. and Visser, E., Generalized type-based disambiguation of meta programs with concrete object syntax. In: Glück, R., Lowry, M. (Eds.), Lecture Notes in Computer Science, vol. 3676. Springer, Tallinn, Estonia. pp. 157-172.]]
[16]
Bravenboer, M. and Visser, E., Rewriting strategies for instruction selection. In: Tison, S. (Ed.), LNCS, vol. 2378. Springer, Copenhagen, Denmark. pp. 237-251.]]
[17]
Bravenboer, M. and Visser, E., Concrete syntax for objects. Domain-specific language embedding and assimilation without restrictions. In: Schmidt, D.C. (Ed.), Proc. the 19th ACM SIGPLAN Conference on Object-Oriented Programing, Systems, Languages, and Applications, ACM Press, Vancouver, Canada. pp. 365-383.]]
[18]
Cordy, J.R., TXL - A language for programming language tools and applications. Electronic Notes in Theoretical Computer Science. v110. 3-31.]]
[19]
de~Jonge, M., A pretty-printer for every occasion. In: Ferguson, I., Gray, J., Scott, L. (Eds.), Proceedings of the 2nd International Symposium on Constructing Software Engineering Tools, University of Wollongong, Australia.]]
[20]
Dolstra, E., de Jonge, M. and Visser, E., Nix: A safe and policy-free system for software deployment. In: Damon, L. (Ed.), 18th Large Installation System Administration Conference, USENIX, Atlanta, GA, USA. pp. 79-92.]]
[21]
Dolstra, E. and Visser, E., Building interpreters with rewriting strategies. In: van den Brand, M., Laemmel, R. (Eds.), Electronic Notes in Theoretical Computer Science, vol. 65/3. Elsevier Science Publishers, Grenoble, France.]]
[22]
T. Ekman, Rewritable reference attributed grammars ¿ design, implementation and applications. Licentiate thesis, Lund University, 2004]]
[23]
Fischer, B. and Visser, E., Retrofitting the AutoBayes program synthesis system with concrete object syntax. In: Lengauer, C. (Ed.), LNCS, vol. 3016. Spinger-Verlag. pp. 239-253.]]
[24]
Gray, R.W., Levi, S.P., Heuring, V.P., Sloane, A.M. and Waite, W.M., Eli: A complete, flexible compiler construction system. Communications of the ACM. v35 i2. 121-130.]]
[25]
Johann, P. and Visser, E., Fusing logic and control with local transformations: An example optimization. In: Gramlich, B., Lucas, S. (Eds.), Electronic Notes in Theoretical Computer Science, vol. 57. Elsevier Science Publishers, Utrecht, The Netherlands.]]
[26]
P. Johann, E. Visser, Strategies for fusing logic and control via local, application-specific transformations, Technical Report UU-CS-2003-050, Institute of Information and Computing Sciences, Utrecht University, February 2003]]
[27]
de Jonge, M., Visser, E. and Visser, J., XT: A bundle of program transformation tools. In: van~den Brand, M.G.J., Perigot, D. (Eds.), ENTCS, vol. 44. Elsevier.]]
[28]
K.T. Kalleberg, http://www.spoofax.org]]
[29]
Kalleberg, K.T. and Visser, E., Combining aspect-oriented and strategic programming. In: Horatiu~Cirstea, N.M.-O. (Ed.), ENTCS, Elsevier.]]
[30]
Lämmel, R. and Peyton Jones, S., Scrap your boilerplate: A practical design pattern for generic programming. ACM SIGPLAN Notices. v38 i3. 26-37.]]
[31]
Lämmel, R. and Visser, J., Typed Combinators for Generic Traversal. In: LNCS, vol. 2257. Springer-Verlag. pp. 137-154.]]
[32]
Luttik, B. and Visser, E., Specification of rewriting strategies. In: Sellink, M.P.A. (Ed.), Electronic Workshops in Computing, Springer-Verlag, Berlin.]]
[33]
Olmos, K. and Visser, E., Turning dynamic typing into static typing by program specialization. In: Binkley, D., Tonella, P. (Eds.), Third IEEE International Workshop on Source Code Analysis and Manipulation, IEEE Computer Society Press, Amsterdam, The Netherlands. pp. 141-150.]]
[34]
Olmos, K. and Visser, E., Composing source-to-source data-flow transformations with rewriting strategies and dependent dynamic rewrite rules. In: Bodik, R. (Ed.), LNCS, vol. 3443. Springer-Verlag. pp. 204-220.]]
[35]
Parr, T.J. and Quong, R.W., Antlr: A predicated-ll(k) parser generator. Software, Practice and Experience. v25 i7. 789-810.]]
[36]
van~den Brand, M.G.J., de~Jong, H., Klint, P. and Olivier, P., Efficient annotated terms. Software, Practice and Experience. v30 i3. 259-291.]]
[37]
van~den Brand, M.G.J., Klint, P. and Vinju, J.J., Term rewriting with traversal functions. ACM Transactions on Software Engineering and Methodology. v12 i2. 152-190.]]
[38]
van~den Brand, M.G.J., Moreau, P.-E. and Vinju, J.J., Environments for term rewriting engines for free!. In: Lecture Notes in Computer Science, vol. 2706. pp. 424-435.]]
[39]
van den Brand, M.G.J., Scheerder, J., Vinju, J. and Visser, E., Disambiguation filters for scannerless generalized LR parsers. In: Horspool, N. (Ed.), Lecture Notes in Computer Science, vol. 2304. Springer-Verlag, Grenoble, France. pp. 143-158.]]
[40]
van den Brand, M.G.J., van Deursen, A., Heering, J., de Jong, H.A., de Jonge, M., Kuipers, T., Klint, P., Moonen, L., Olivier, P.A., Scheerder, J., Vinju, J.J., Visser, E. and Visser, J., The ASF+SDF meta-environment: A component-based language development environment. In: CC ¿01: Proceedings of the 10th International Conference on Compiler Construction, Springer-Verlag, London, UK. pp. 365-370.]]
[41]
R.B. Vermaas, xDoc. An extensible documentation generator, Master's Thesis, Utrecht University, Utrecht, The Netherlands, February 2004. INF/SCR-03-41]]
[42]
E. Visser, Syntax Definition for language prototyping, Ph.D. Thesis, University of Amsterdam, September 1997]]
[43]
Visser, E., Strategic pattern matching. In: Narendran, P., Rusinowitch, M. (Eds.), Lecture Notes in Computer Science, vol. 1631. Springer-Verlag, Trento, Italy. pp. 30-44.]]
[44]
Visser, E., Scoped dynamic rewrite rules. In: van~den Brand, M., Verma, R. (Eds.), Electronic Notes in Theoretical Computer Science, vol. 59/4. Elsevier Science Publishers.]]
[45]
Visser, E., Stratego: A language for program transformation based on rewriting strategies. System description of Stratego 0.5. In: Middeldorp, A. (Ed.), LNCS, vol. 2051. Springer. pp. 357-361.]]
[46]
Visser, E., Meta-programming with concrete object syntax. In: Batory, D., Consel, C., Taha, W. (Eds.), LNCS, vol. 2487. Springer-Verlag, Pittsburgh, PA, USA. pp. 299-315.]]
[47]
Visser, E., Program transformation with Stratego/XT: Rules, strategies, tools, and systems in StrategoXT-0.9. In: Lengauer, C. (Ed.), LNCS, vol. 3016. Spinger-Verlag. pp. 216-238.]]
[48]
E. Visser, The Stratego/XT BibTeX tools, Tool documentation, Dept. Information and Computing Sciences, Universiteit Utrecht, Utrecht, The Netherlands, 0.2pre12491 edition, Aug 2005 (Draft)]]
[49]
Visser, E., A survey of strategies in rule-based program transformation systems. Journal of Symbolic Computation. v40 i1. 831-873.]]
[50]
Visser, E., WebDSL: A case study in domain-specific language engineering. In: Lecture Notes in Computer Science, Springer.]]
[51]
Visser, E., Benaissa, Z.-e.-A. and Tolmach, A., Building program optimizers with rewriting strategies. In: Proceedings of the third ACM SIGPLAN International Conference on Functional Programming, ACM Press. pp. 13-26.]]
[52]
E. Visser, et al., http://www.strategoxt.org]]
[53]
Visser, J., Visitor combination and traversal control. ACM SIGPLAN Notices. v36 i11. 270-282.]]
[54]
Waddington, D.G. and Yao, B., High fidelity C++ code transformation. In: Proceedings of the 5th workshop on Language Descriptions, Tools and Applications, ENTCS. Elsevier.]]
[55]
Ward, M. and Zedan, H., MetaWSL and meta-transformations in the FermaT transformation system. In: COMPSAC 2005: Proceedings of the 29th Annual International Computer Software and Applications Conference COMPSAC 2005,]]
[56]
Ward, M.P. and Bennett, K.H., A practical program transformation system for reverse engineering. In: WCRE¿93: Proceedings of the 1993 Working Conference on Reverse Engineering, IEEE Computer Society Press. pp. 212-221.]]

Cited By

View all

Recommendations

Comments

Information & Contributors

Information

Published In

cover image Science of Computer Programming
Science of Computer Programming  Volume 72, Issue 1-2
June, 2008
71 pages

Publisher

Elsevier North-Holland, Inc.

United States

Publication History

Published: 01 June 2008

Author Tags

  1. Concrete syntax
  2. Dynamic rewrite rules
  3. Program transformation
  4. Rewrite rules
  5. Rewriting strategies
  6. Stratego
  7. Stratego/XT

Qualifiers

  • Article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)0
  • Downloads (Last 6 weeks)0
Reflects downloads up to 06 Jan 2025

Other Metrics

Citations

Cited By

View all

View Options

View options

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media