Stratego/XT is the combination of the [[Stratego language]] for strategic programming with the XT bundle of transformation tools.
-----+++ XT
XT is a bundle of transformation tools that combines Stratego, a
language for transformation of abstract syntax trees, with tools for
other aspects of program transformation. Stratego only deals with
transformation of programs represented by means of terms. Parsing and
pretty-printing is provided by the XT bundle of transformation tools,
which combines Stratego with the Syntax Definition Formalism [[Sdf.WebHome][SDF]] and
the Generic Pretty-Printing Package [[Tools.GenericPrettyPrinter][GPP]].
----+++ ATerm Exchange Format
The foundation of XT is the ATerm format for exchange of structured
data such as abstract syntax trees. The format essentially consists of
first-order prefix terms. The format is supported by libraries for C,
Java, and Haskell, which support reading and writing of ATerms.
----+++ SDF
The Syntax Definition Formalism [[Sdf.WebHome][SDF]] supports high-level, declarative,
and modular definition of the syntax of programming languages and data
formats. The formalism integrates the definition of lexical and
context-free syntax. The modularity of the formalism implies that it
is possible to easily _combine_ two languages or to _embed_ one
language into another.
----++++ Grammar Base
The SDF Grammar Base is a collection of syntax definitions for various
languages, including Java, C, SQL, COBOL, BibTex, Stratego, and SDF.
The Grammar Base will be distributed separately.
----++++ Parser Generation
The parser generator PGEN Generates parse tables from SDF definitions.
----++++ Scannerless Generalized-LR Parser
The scannerless generalized-LR parser SGLR interprets parse tables
generated from SDF definitions. The parser does not use a separate
scanner; lexical analysis is included in the parsing process. The
parser can deal with arbitrary context-free grammars. Disambiguation
is based on filters in different stages of the parsing process.
----+++ Parse Tree Manipulation
XT provides several generic tools for parse tree manipulation such as
implosion of parse trees to abstract syntax trees.
----+++ Grammar Engineering
XT provides several tools for derivation of SDF syntax definitions
from [[Transform.YetAnotherCompilerCompiler][YACC]]-like formalisms, which allows reusing existing grammars to a
large extent, and tools for improving syntax definitions.
----+++ Generic Pretty-Printing Package
Generic pretty-printing package ([[Tools.GenericPrettyPrinter][GPP]]) is based on the
device-independent Box format and allows pretty-printing to different
targets; now supported are text, html and latex. Pretty-printers are
driven by pretty-print tables, which can be generated automatically
from syntax definitions.
----+++ Application Areas
XT is applicable in a many instances of program transformation
including
* Meta-programming
* Generative programming
* Compilation
* Implementation of domain-specific languages
* Language extensions
* Documentation generation
* Software visualization
----+++ Brochure
This two page brochure
* http://www.stratego-language.org/ftp/StrategoXT.pdf
summarizes the main features of Stratego and XT. Useful for distribution at conferences and such.
-- Main.EelcoVisser - 17 Nov 2002
-- Main.EelcoVisser - 04 Jun 2002