10:15 opening
Session 1: Language Design (chair Main.EelcoVisser)
10:30 Towards Typeful Stratego by Transform.RalfLaemmel (CWI, VU)
11:30 Functional Stratego by Transform.EelcoDolstra (Universiteit Utrecht)
12:15 lunch
Session 2: Programming Techniques (chair Joost Visser)
13:45 _Ready, Steady, Stratego. Running Stratego Specifications with StrategoScript_ by Main.EelcoVisser (Universiteit Utrecht)
14:30 break
Session 3: Tools (chair Transform.RalfLaemmel)
14:45 XT Capita Selecta by Main.MerijnDeJonge and Main.JoostVisser (CWI)
15:45 break
Session 4: Applications (chair Main.MerijnDeJonge)
16:00 SDL Documentation Generation by Transform.RonaldVanHalen (Lucent Technologies)
16:30 CobolX: Transformations for Improving COBOL Programs by Transform.HedzerWestra (Universiteit Utrecht)
17:00 CodeBoost: A Framework for Transforming C++ Programs by Main.OttoSkroveBagge (University of Bergen, Norway)
17:30 Optimizing Pan Programs by Transform.ArneDeBruijn (Universiteit Utrecht)
18:00 closing
19:00 dinner
by Transform.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 Transform.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 Main.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 Main.MerijnDeJonge and Main.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 Transform.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 Main.OttoSkroveBagge (University of Bergen, Norway)