10:15 opening
Session 1: Language Design (chair EelcoVisser)
10:30 Towards Typeful Stratego by RalfLaemmel (CWI, VU)
11:30 Functional Stratego by EelcoDolstra (Universiteit Utrecht)
12:15 lunch
Session 2: Programming Techniques (chair Joost Visser)
13:45 Ready, Steady, Stratego. Running Stratego Specifications with StrategoScript? by EelcoVisser (Universiteit Utrecht)
14:30 break
Session 3: Tools (chair RalfLaemmel)
14:45 XT Capita Selecta by MerijnDeJonge and JoostVisser (CWI)
15:45 break
Session 4: Applications (chair MerijnDeJonge)
16:00 SDL Documentation Generation by RonaldVanHalen? (Lucent Technologies)
16:30 CobolX: Transformations for Improving COBOL Programs by HedzerWestra (Universiteit Utrecht)
17:00 CodeBoost: A Framework for Transforming C++ Programs by OttoSkroveBagge (University of Bergen, Norway)
17:30 Optimizing Pan Programs by ArneDeBruijn (Universiteit Utrecht)
18:00 closing
19:00 dinner
by RalfLaemmel (CWI, VU)
Stratego and the underlying system S are as yet untyped. We propose a type system which covers the essence of system S. In addition to system S, a generic traversal primitive for folding the children of a term is considered. This primitive is essential for type-changing traversal strategies. The type system w hich we propose is based on certain signature-independent generic types. We also have to introduce a few constructs which enable us to rephrase untyped Stratego programs in a typeful manner. The type system we propose is based on certain signature-independent generic types.
by EelcoDolstra (Universiteit Utrecht)
Stratego is a domain-specific language intended for the construction of program transformation systems. To that end, the language has a number of interesting features; notably, first class pattern matching and generic traversal mechanisms. The question arises whether and how such features can be implemented in functional programming languages and Haskell in particular. In a rewrite system it is essential that one can easily recover from pattern match failure, so that alternative rewrite rules can be tried. Typical functional languages do not support this very well since local pattern match failure leads to global divergence. This article shows how to solve this problem by adding a choice operator to a simple functional language. It seems that this approach is not only useful to strategic programming, but is also more powerful than previous proposals to extend Haskell's pattern matching, such as views, patterns guards, and transformational patterns. Furthermore, we discuss how the generic programming techniques can be employed to implement generic traversals.
by EelcoVisser (Universiteit Utrecht)
A key problem in the development of Stratego specifications has been the slow turn around time of the Stratego compiler. To alleviate this problem StrategoScript? provides instanteneous execution of specification through an interpreter. In this talk I present StrategoScript? by means of a couple of examples and discusses its implementation in Stratego.
by MerijnDeJonge and JoostVisser (CWI)
XT is a bundle of program-transformation tools. Stratego is part of this bundle, and is used as implementation language for many tools throughout its packages.
Giving special attention to the role of Stratego, we discuss a selection of our XT experiences. These range from the construction of meta-tools to support Stratego programming, through Stratego techniques applied in constructing some of XT's constituents, to projects where XT (including Stratego and tools programmed in Stratego) has been applied to program-transformation problems.
by RonaldVanHalen? (Lucent Technologies)
Part of the operation of Lucent Technologies 5ESS telephone exchange is described using an SDL dialect (Specification and Description Language). SDL describes the behaviour using statemachines. This description can be a textual or a graphical one, but Lucent only uses the textual description. Commercial tools are not available to interpret these SDL models, because a proprietary dialect (AT&T SDL) is used. By using Stratego and the XT toolset, a tool has been created that transforms the textual SDL code into a graphical representation of a statemachine. Stratego was used to collect the statenames and transitions from the textual description. The XT tool set and a graph drawing program were used to visualize the statemachine. The resulting graph shows the transitions between the states. This makes it easier to understand the behaviour of the code, because a graphical representation of the code is given, which abstracts from the details contained in the textual format.
by OttoSkroveBagge (University of Bergen, Norway)