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