Le 12/02/2014 14:40, Camille Teruel a écrit :
Hello,

Here are my proposals,


===================================================
Title: Generic rewriting engine

Context:
Rewriting is an useful technique that has a lot of applications in many
functional programming language.
A rewriting engine that can rewrite arbitrary graph of objects would
have a lot of useful applications like code refactoring and migration of
instances in an alive program.

Goal:
The goal of this proposal is to implement a rewriting engine for
arbitrary tree/graph of object.
A rewriting rule must be able to define:
- Patterns to match a part of the graph possibly including metavariables
(variables that match subparts of the matched part)
- Transformation of the matched part using the metavariables
The engine is parametrized with a set of rules an a traversal of the
graph (look at
http://www.humane-assessment.com/blog/traversal-enabled-pharo-objects for 
ideas).
Inspirations can be found in the pattern-matching library of Newspeak:
(http://www.hpi.uni-potsdam.de/hirschfeld/publications/media/GellerHirschfeldBracha_2010_PatternMatchingForAnObjectOrientedAndDynamicallyTypedProgrammingLanguage_HPI36.pdf).

Skill level: intermediate
Dialect: Free
Mentor: Camille Teruel

I think that SmaCC 2.0.3[1] has already a language agnostic generic rewriting engine[2] (including a client/server and batch implementation if you have a few hundreds of thousands of lines to rewrite:)).

[1] http://www.refactoryworkers.com/SmaCC.html

[2] http://www.refactoryworkers.com/SmaCC/Transformations.html

I'd say that for such things, the approach is usually to define a DSL, either the refactoring pattern language of RB, or, a bit newer, the SmPL of Coccinelle[3].

[3] http://coccinelle.lip6.fr/

The similarities between Coccinelle and RB are surprising on that level.

Regards,

Thierry
--
Thierry Goubier
CEA list
Laboratoire des Fondations des Systèmes Temps Réel Embarqués
91191 Gif sur Yvette Cedex
France
Phone/Fax: +33 (0) 1 69 08 32 92 / 83 95

Reply via email to