We are glad to introduce our new tool, Hades, for synthesizing transformations on hierarchically structured data.
Many applications which every computer user is using every day, such as file systems, represent and store data in tree data structures. A considerable class of user tasks in such applications requires restructuring a tree or updating values of tree nodes. Since these tasks usually should be performed on large trees, a transformation program is required to accomplish them.
This means, a programmer who knows the application specific language should spend some time to implement an executable code in that language which fulfills the requirements of the task description. The downside of this process is that an ordinary user can not perform such tasks without getting help from an expert, and an expert should spent time to write a program which may be used just once.
Our solution to this problem is a new tool called Hades. Hades automatically synthesizes the desired tree transformation by analyzing a set of pairs of input trees and their corresponding output trees, provided by a user. The output generated by Hades is an executable code in the application specific language.
Hades design consists of two main components: A domain specific plug-in which translates information between application language and Hades intermediate language, and a domain agnostic synthesis core which synthesizes tree transformations in Hades intermediate language.
Current version of Hades supports two widely used domains: File Systems and XML. A user can provide pairs of unix directories as input, and receive a bash script as the result, or provide pairs of XML files and get an XSLT script from our tool.
Hades can be used to synthesize scripts which solve real world problems. We have provided a video which introduces Hades and shows how Hades can be used in practice.
To know more details about how Hades works, please read our PLDI'16 paper "Synthesizing Transformations on Hierarchically Structured Data". [Paper will be available here soon!]
For any further information, please contact Navid Yaghmazadeh (nyaghma[at]cs[dot]utexas[dot]edu).