Better rewriting rule tool

Mentor: Stéphane Ducasse
Second mentor: Sean DeNigris
Level: Intermediate
Submitted proposal to Melange: Gisela Decuzzi
Invited students: Gisela Decuzzi
Students interested: Gisela Decuzzi(very), Sergij Skytyba


The refactoring browser is based on a powerful rewrite engine which transforms AST. However it is quite cumbersome to write rewrite rules. There is a need to build a tool to help programmers defining their own transformation.

Technical Details

SmallLint contains a powerfull tree matching algorithm. It can be used to define code transformation. In fact 

most of the refactorings are expressed using this parse tree matcher. 

However it is difficult to use because the syntax is difficult to remember and understanding the impact of a syntactic elements is difficult. We propose to build a better tool to help the user to specify its transformations.

The tools should 

  • let the user copy and paste a method
  • click on an expression (and by mapping it to its AST node) 
  • transform it into a meta variable
  • several expressions can also be turned into special SmallLint meta variable.

The resulting expression should appears live and the user show see the code transformation on the fly.

We have collected a set of document describing smallLint. In addition the student will be able to participate to a book chapter.

Benefits to the Student

  •     learning AST
  •     learning AST transofrmation
  •     learning AST pattern matching
  •     User interface definition

Benefits to the Community

A tool that is cruelly missing.



Updated: 10.4.2013