Stratego/XT

From Wikipedia, the free encyclopedia
Jump to: navigation, search
Stratego/XT
Stratego Logo.png
Stable release 0.17 / July 8, 2009
Operating system GNU/Linux, Unix, Mac OS X, Windows
Type program transformation system
License LGPLv2+[1]
Website http://www.strategoxt.org

Stratego/XT is a language and toolset for constructing stand-alone program transformation systems. It combines the Stratego transformation language with the XT toolset of transformation components, providing a framework for constructing stand-alone program transformation systems. The Stratego language is based around a programming paradigm called strategic term rewriting. It provides rewrite rules for expressing basic transformation steps. The application of these rules can be controlled using strategies, a form of subroutines. The XT toolset provides reusable transformation components and declarative languages for deriving new components, such as parsing grammars using the Modular Syntax Definition Formalism (SDF) and implementing pretty-printing.

Concrete syntax[edit]

Program transformations often operate by modifying the abstract syntax tree (AST). In Stratego it is also possible to specify transformations using concrete syntax.[2] This allows programmers to express a transformation using the familiar (and often more concise) syntax of the object programming language, while it internally still operates on the AST.

Examples[edit]

A rule to desugar a do-while statement in Java:[3]

desugar : While(e, stm) -> If(e, DoWhile(stm, e))

The same rule, using concrete syntax:

desugar : |[ while (e) stm; ]| -> |[ if (e) do stm while(e); ]|

See also[edit]

History[edit]

The theoretical framework for Stratego, called System S, was first described in a paper [4] by Eelco Visser and Zine-el-Abidine Benaissa.

Notes[edit]

  1. ^ "StrategoXT - Revision 25937: /strategoxt/trunk". 
  2. ^ Meta-programming with concrete object syntax
  3. ^ Using the Java-front syntax definition
  4. ^ Visser, Eelco; Zine-el-Abidine Benaissa (1998). "A Core Language for Rewriting". Second International Workshop on Rewriting Logic and its Applications (WRLA 1998) 15. Elsevier Science Publishers. pp. 422–441. doi:10.1016/S1571-0661(05)80027-1. 

External links[edit]