Skip to topic | Skip to bottom


EelcoVisser.HotSpotsr1.55 - 12 Dec 2004 - 10:10 - EelcoVisser

Start of topic | Skip to actions


Paper: 'Composing Source-to-Source Data-Flow Transformations with Rewriting Strategies and Dependent Dynamic Rewrite Rules' describes the composition of source-to-source data-flow transformations in the program transformation language Stratego. The language supports the high-level specification of transformations by means of rewriting strategy combinators that allow a natural modeling of data- and control-flow without committing to a specific source language. Data-flow facts are propagated using dynamic rewriting rules. In particular, we introduce the concept of dependent dynamic rewrite rules, for modeling the dependencies of data-flow facts on program entitities such as variables. The approach supports the combination of analysis and transformation, the combination of multiple transformations, the combination with other types of transformations, and the correct treatment of variable binding constructs and lexical scope to avoid variable capture.

The paper has been accepted for publication in the proceedings of CC'05, the 14th international conference on Compiler Construction in Edinburgh.


Proof that Stratego has a real chance at becoming a succesful language.


Paper: 'Program Transformation With Scoped Dynamic Rewrite Rules' describes the new design of dynamic rewrite rules including scope labels, extended dynamic rules, and union and intersection of rulesets. It has been conditionally accepted for inclusion to the special issue on program transformation of Fundamenta Informaticae.


During the after-OOPSLA/GPCE-conference-beer Tijs van der Storm challenged me to write a program that prints its own source in Stratego. That was not too hard of course, but getting the quotes right is tricky. Here it is:

module quine imports lib strategies main = !["module quine imports 
lib strategies main = ![\"","\"]; \\ [x, y] -> [x, <escape>x,
 \"\\\",\\\"\", <escape>y, y] \\; concat-strings; <print>(stdout
, [<id>]); <exit> 0"]; \ [x, y] -> [x, <escape>x, "\",\"", <escape>y, y] \; 
concat-strings; <print>(stdout, [<id>]); <exit> 0

I wrote a little educational reconstruction of the design process.

There are some further challenges here. The above program uses strings for code generation, which is against everything we stand for of course. So the next thing to do is write a program which uses concrete syntax to produce a syntax tree for its own source and then pretty-prints it. Another one is a program that prints its own source and compiles it. Calling XTC components is allowed of course;-)


Back from Vancouver and a good conference.


Springer published the conference proceedings of GPCE 2004 online.

Of course we will also present our paper on Concrete Syntax for Objects next week at OOPSLA (on Thursday to be precise). If you are close to Utrecht this week and not in Vancouver next week you might consider attending Martin's rehearsal at the Software Technology Colloquium? this Thursday.

Karina Olmos and I finished a paper on definition of data-flow optimizations with dependent dynamic rules. It is not available publicly yet, but if you are interested and present good arguments, we may let you have a peek.


Martin Bravenboer? and I are going to state that the world needs Reusable and Adaptable Strategies for Generative Programming next week at the Software Transformation Systems Workshop of GPCE'04 in Vancouver. In fact dependent dynamic rules are a step in the right direction since it is a generic mechanism that allows higher level specification of data-flow transformations without restricting applications to a fixed language or semantic model. (Now you are really becoming intrigued what those new dynamic rules are ...)

Just when I thought my GPCE tour of duty was over, Eugenio Moggi asked me to be publicity chair for GPCE'05. So you better get ready to write a generative paper for GPCE next year. It will be co-located with ICFP.


Today was my birthday and it was well spent writing a paper. Gifts are always welcome. High on the wish list are Stratego applications (toy, but preferably ready for deployment), new components for the Stratego compiler (I may have some specific ideas if necessary), a typechecker (for Stratego), and some grant money (or a lot even).


Apparently I am a Stratego blogger and I have to blog more. I'll do my best, here goes ...

Dependent dynamic rules are a cool (that's a good blog word isn't it) generative extension of the basic dynamic rules in StrategoXT. Dependent dynamic rules kill themselves if you tell them to and also behave well under lexical scope so to avoid free variable capture. A complete common-subexpression elimination transformation component for Tiger (based on a generic data-flow traversal) is defined in 29 lines, of which 13 are empty lines and module header and such overhead. Excited? Read more about it in our upcoming paper.

Actually if you want to stay up to date, or check if the Stratego project is alive, read the viewcvs `blog' in the Stratego/XT subversion repository.


Releases are now constructed automatically for Stratego/XT, BibTeX-Tools, Tiger, and the new Stratego Core compiler; see


Sent out call for participation for GPCE'04. Early registration closes September 16.


All 500 pages of the GPCE'04 proceedings on their way to Springer; well the pdf files.

Visiting ATOS-Origin


My first steps on the path to generalizing wiki were remarkably smooth using Java servlets. A first prototype emerged after two days work; one day to get deployment set up, another for programming. First test version will be available soon.


Jack Greenfield and Peter Mosses agree to give invited talks at GPCE'04.


After searching and hacking scripts to automatically number pages for a proceedings based on a set of postscript files it turns out that Springer no longer wants hard copy as they describe in their manual for volume editors.


Release management for Stratego/XT is starting to happen.


bibtex-tools now supports production of publication lists by year, by type, by year and type, etc. All based on a query language for selecting BibTeX entries and an embedding of this query language in LaTeX templates for specifying the presentation.


strc-core: Working on redesign of the Stratego compiler based on a new definition of a Stratego Core language. (It doesn't yet build completely in the new Nix buildfarm.)


Martin Bravenboer and I wrote a little position paper on 'Reusable and Adaptable Strategies for Generative Programming' for the Software Transformation Systems workshop at GPCE'04.


Randy Marques visited Utrecht again and revealed his Generic Build System.


The website of the Master Program Software Technology? looks all fresh, clean, and up-to-date again.


I'm organizing a new Seminar on Software Generation and Configuration? next winter. The plan is to look at software variability from all possible angles. There is a course description?. Pointers to interesting papers are welcome.


A fresh plan for the Software Engineering? course. All that remains is execution of the plan, and a prototype for GenWiki? of course. (If the question mark is still there, I haven't done it yet.)


Tinkering with bibtex-tools to get the entire composition into Stratego with XTC. Fiddling with directories to catch all the side effects caused by latex runs.


Randy Marques visited Utrecht and talked about ANSI C, coding standards and static analysis tools.


Visit to Philips Research.


Paper: 'A survey of strategies in rule based program transformation systems' accepted for publication in the Journal of Symbolic Computation.

2004-05-25 - 28

Attending ICSE 2004


Finally submitted a new paper on the redesign of scoped dynamic rewrite rules in Stratego.


NWO meeting about possible collaboration between astrophysics and computer science.


Chairing a program committee is a huge time-sink, but the result is worth it. The GPCE PC selected 25 papers from 75 submissions.


This morning Bente Sofie was born.


Release of StrategoXT-0.10? introduce a complete redesign of scoped dynamic rewrite rules.


Paper: 'Concrete syntax for objects' describes the MetaBorg? approach to embedding and assimilating domain-specific languages in a host language illustrated with several extensions of Java. It has been accepted for OOPSLA'04.


Release of StrategoXT-0.9.5?.

Master's thesis? of Rob Vermaas on ExtendibleDocumentationGeneration?.


What do you think refers to?


Pictures of the Fifth Stratego User Days (SUD'04).


My Erdos number is at most 5.

We (the TraCE? team) had a nice meeting with the Deliver team at CWI.


Yet another domain:

75 submissions for GPCE'04!


My Erdos number is at most 6.


My Erdos number is at most 7.


Finally, a new revision of A survey of strategies in rule based program transformation systems.


Visit by Rob van Ommeringen who gave a talk about Building product populations with Koala2?.


Jacquard match making event


Installing CyberChair is pretty straightforward (modulo some tweaking of the server configuration).


The Fifth Stratego User Days (SUD'04) was attended by 25 people, had a full program with 21 interesting talks and long walks after lunch. The slides of most talks are linked from the program of the meeting.


Finished revisions of papers `Retrofitting the AutoBayes Program Synthesis System with Concrete Syntax' and `Program Transformation with StrategoXT' for the book on the Dagstuhl meeting about 'Domain-Specific Program Generation'.

Updated publication list for 2003 including a technical report with a new version of the paper on Fusing Logic and Control with Patricia Johann.

With Karina Olmos I found out that data-flow optimizations with dynamic rules can be further improved by employing `self'-destructive rules.


At the Functional Refactoring Workshop in Kent I gave a talk about Implementation of Partial Evaluation in Stratego/XT. For the demonstration I developed a primitive emacs mode for Tiger with menus for applying various transformations. It is quite easy to make Stratego transformations interactively usable.


Visit to Microsoft in Aachen.


Attended the IFIP WG 2.1 meeting in Rome and gave a talk about the refactored implementation of constant propagation for Tiger. Thanks to the excellent explanation by Ganesh Sittampalam I finally understand the implementation of regular path queries.


Stratego:StrategoRelease094 --- finally a new release

2003-01-20 : automatic generation of releases

2003-12-29 - 2004-01-02

Implementing a partial evaluator for Tiger:TigerLanguage for the program transformation course. Required extension of Tiger with command-line arguments and modules.

2003-12-22 - 30

Distribution of StrategoXT with the Nix deployment system?; towards completely automatic release management.


Creating and linking with a shared library for the Stratego Standard Library is a matter of getting the libtool to do the right thing.

2003-12-17 - 19

Stratego:SeparateCompilation : implementation of a seperate compilation scheme for Stratego.


Paper about Trace.Nix accepted at ICSE'04 and writing another paper about Nix.


Chapter 10 of StrategoBook on 'Generic Traversal Strategies' rewritten.


Chapter 9 of StrategoBook on 'First Class Pattern Matching' rewritten.


Chapter 8 of StrategoBook on 'Composing Strategies' rewritten.


Chapter 7 of StrategoBook on 'In Control of Rewriting' rewritten


Chapter 5 of StrategoBook on 'Term Rewriting' rewritten


Paper: Retrofitting the AutoBayes Program Synthesis System with Concrete Syntax -- Prolog with concrete syntax


I decided to make the draft StrategoBook available on the web

2003 Winter (Nov - Jan)

Teaching Program Transformation


Program Transformation with StrategoXT -- revision with an extra section about annotations in Stratego and a paragraph on foreign functions


Stratego:BibtexTools to convert a bibtex file to a publication list in html and pdf. Used to generate the personal and group bibliographies for the CST?.


Program chair for GPCE 2004

2003 Fall

Teaching software engineering? and high-performance compilers?

2003-07-15 -- 2003-08-16

Stratego:StrategoOptimizer (Stratego:AvoidRunTimeChecksOnVariables, Stratego:ConstantAndCopyPropagation, ...) -- adding optimizations to the Stratego:StrategoCompiler


Buildfarm? -- prototyping buildfile language


Stratego:NativePrimitives -- extension of strategies with term arguments and primitives with strategy arguments


Beheersen van Variabiliteit met Transparante Configuratieomgevingen? -- paper for Informatie


Stratego:PrologTools -- a bridge between Prolog and Stratego


Stratego:StrategoRelease092 -- new release of StrategoXT


Program Transformation with StrategoXT -- Overview paper of StrategoXT for Dagstuhl seminar


Stratego:StrategoRelease091 -- new release of StrategoXT


Talk about Stratego:TransformationToolComposition for SUD'03


Is open publishing possible?


Stratego:PrologTools -- syntax definition for Prolog to make extension with concrete syntax for AutoBayes


Buildfarm? -- what is the best architecture for a buildfarm?

Edit | Attach | Printable | Raw | More topic actions
Revisions: | r1.55 | > | r1.54 | > | r1.53 | Page history | Backlinks
You are here: EelcoVisser > HotSpots

to top

Copyright © 2003-2018, Software Engineering Research Group, Delft University of Technology, The Netherlands