JunGL: a Scripting Language for Refactoring
JunGL is a domain-specific language to script refactoring transformations. It is being designed to enable developers and tool authors to easily, correctly implement refactoring support for any language.
JunGL is a hybrid of a functional language in the style of ML and a logic query language akin to Datalog. It manipulates a graph data structure that represents all information about a program including ASTs, variable binding, control flow and dataflow. It has a notion of demand-driven evaluation for constructing edges of the graph, and allows powerful path queries to be run over the program.
All logical constructs translate to a variant of Datalog that works on duplicate-free sequences rather than sets, with the rationale to present logical matches in a meaningful deterministic order.
Resources
JunGL: a Scripting Language for Refactoring (ICSE 2006)
Type-based Refactoring using JunGL (Arnaud's MSc thesis - September 2006)
Scripting Refactorings with JunGL (OOPSLA 2006 - poster)
A Language to Script Refactoring Transformations (Mathieu's DPhil thesis - 2008)
Designers
Mathieu Verbaere, Ran Ettinger and Oege de Moor
Contributors
Arnaud Payement: Type-based refactoring