easy meta - programming with rascal .
Stratego/XT 0.17 -- A Language and Toolset for Program Transformation