Please join Rijnard van Tonder, doctoral candidate in the Software Engineering Institute at Carnegie Mellon University for the seminar, “Lightweight Multi-Language Syntax Transformation with Parser Parser Combinators,” on Wednesday, June 26th, 2019!
Lightweight Multi-Language Syntax Transformation with Parser Parser Combinators
Rijnard van Tonder, doctoral candidate in the Software Engineering Institute at Carnegie Mellon University
Wednesday, June 26th, 2019
Brickyard (BYENG) 210, Tempe campus [map]
Automatically transforming programs is hard, yet critical, for automated program refactoring, rewriting and repair. Multi-language syntax transformation is especially hard due to syntactic ambiguity across languages and heterogeneous representations of parse trees and ASTs. Our insight is that the problem can be decomposed into procedure where (1) a common grammar expresses the central CFL properties shared by many contemporary languages and (2) open extension points in the grammar allows plugging in smaller parsers to handle language-specific syntax. Our key contribution operationalizes this decomposition by detaching from a particular tree representation, performing code transformation without parsing syntax into a secondary data structure. Instead, syntax matching is performed by a modularly defined parser alone. Lifting syntax rewriting to a modularly-defined parsing problem elides the need for a universal data structure representation for transformation, and admits efficient and declarative rewrite templates for many languages. We demonstrate real-world rewrite patterns for 12 languages, and over 50 syntactic changes produced by our approach have been merged into 40+ of the most popular open source projects for these languages. This talk will include a demo of eminently practical tools for rewriting code and presents new possibilities for using program transformation to augment testing, fuzzing and program analysis.
About the speaker
Rijnard is a doctoral candidate in the Software Engineering Institute at Carnegie Mellon University, advised by Claire Le Goues.
His research interest is in the overlap of automated program repair, program transformation and program analysis, with an emphasis on bringing new advances in these areas to practice. Rijnard was born South African and holds a master’s and bachelor’s from Stellenbosch University.