Programming Language Independent Abstract Syntax Trees
Mission Statement
My PhD project started the 15th of September in 2003, with the following project statement:
Maintenance of software programs is normally the most expensive part of the software life cycle. Most tools that support maintainenance and improvements to programs and program structure, be they compilers, program verifiers, transformation systems, modelling or reverse-engineering tools all represent the program internally in the form of abstract syntax trees (ASTs).
Usually, the AST is generated from a description of the subject language's concrete syntax, binding it closely to the subject language, which in turn complicates the construction of cross-language maintenance tools, even though their task may to a large degree be totally language independent.
My work aims to chart the concepts that underlie modern and forthcoming programming methodologies, and seeks to propose a language-independent AST supporting these. Additionally, I have a goal of demonstrating that such an AST can be the basis for language-independent software tools.
Results
Dissertation
This project resulted in my PhD dissertation, Abstractions for Language-Independent Program Transformations.
Software
Software that I have constructed as part of my work:
- AspectStratego -- a language extension to the Stratego programming language.
- The Spoofax Editor -- an interactive editor for Stratego. Plugin for Eclipse.
- The Spoofax Interpreter -- an interpreter for Stratego, written in Java.
- jsglr -- a scannerless, generalized LR (GLR) parser, written in Java.
I also help maintain the following software:
Theory
I am still working on the theory and implementation of views and traceability in the context of program transformation.
See the publications page for details.