Mein Unparser für Eclipse QVTo
Di, 05.04.2016
In
QVT Operational.
Bereits vor vier Jahre hatte ich mit dem Bug 377320 - QvtOperationalResourceImpl.save() not implemented festgehalten, dass QVTo zwar Modelle zu allen möglichen EMF Metamodellen erzeugen kann, ironischerweise aber nicht QVTo Transformationen selbst.
Zwar finden sich gelegentlich Nachfragen zu dieser Funktionalität im Forum ( "Generate QVTo-file", "Higher-order model transformations with QVTo" ), aber bislang hatte niemand Zeit zur Implementierung dieser Funktionalität gefunden. Ich selbst habe meine Implementierung in 2012 zwar begonnen, konnte Sie aber nicht zu Ende führen.
Nunmehr habe ich meine Implementierung abgeschlossen und dem Eclipse QVTo Projekt als Git-Patch zur Verfügung gestellt. Ich hoffe, dass es das Feature noch in das Neon-Release schafft.
Der Unparser
Der Unparser ist eine handgeschriebene Fleißarbeit, die sämtliche Typen von AST-Knoten rekursiv in ihre textuelle Darstellung umwandelt.
Die Tests
Bei den Tests habe ich auf die vorhandenen Tests für den Parser zurückgegriffen und die meisten der dort verwendeten Beispiel-Transformationen wiederverwendet.
Die Transformationen werden kompiliert, un-parse-t und dann erneut kompiliert. Dann werden die ASTs aus der Kompilierung der Originaltransformation und der Unparser-Version verglichen.