My PhD dissertation, Abstractions for Language-Independent Program Transformations,
introduces new techniques for program transformation. Its abstract:
Maintenance of software programs is normally the most expensive part of the software life cycle.
Most tools that support maintenance and improvements to programs and program structure, be they
compilers, program verifiers, transformation systems, modeling or reverse-engineering tools all
represent the program internally either in the form of abstract syntax trees (ASTs), or in forms
derived from it.
In each of these software tools, the respective AST is almost always specific to a given
programming language. While the task of a given tool, e.g., a documentation generator, may be
generic across many languages, the chosen program representation binds a given tool to a
particular subject language. The goal of this thesis was find more generic solutions to the AST
problem. My dissertation investigates how one may construct ASTs more generically, and how one
may express reusable, language-independent program analyses and transformations on top of these
generic ASTs. It has been an explicit goal that transformations and analyses should be reusable
for language families, across language infrastructures and, when possible, across language
paradigms.