Concrete Syntax Metapatterns
This program is tentative and subject to change.
To keep large legacy codebases maintainable, software engineers should be able to develop large-scale refactorings. A key aspect of developing restructurings is matching and transforming abstract syntax trees (ASTs). Matching on ASTs is typically done through patterns, which are defined as AST terms with holes. These patterns can be extended to become metapatterns, which increase expressivity. Metapattern examples include disjunctions, descendant patterns, and patches where we inline transformations into the pattern itself.
Despite their expressivity, abstract syntax (meta)patterns can become verbose and require restructuring engineers to be intimately familiar with the data types that define the AST. A better approach is to use concrete syntax patterns, which allows us to denote our patterns in the syntax of the object language. Previous work has shown that we can use external black-box parsers of the object language to compile concrete syntax patterns.
In this paper, we scale this compilation method to include metapatterns. We evaluate this method through an implementation written in Kotlin, and compare existing restructurings without the use of metapatterns to ones written with metapatterns, demonstrating a reduction in code complexity.
This program is tentative and subject to change.
Sun 20 OctDisplayed time zone: Pacific Time (US & Canada) change
14:00 - 15:30 | |||
14:00 30mTalk | Concrete Syntax Metapatterns SLE Luka Miljak Delft University of Technology, Casper Bach Poulsen Delft University of Technology, Rosilde Corvino TNO-ESI | ||
14:30 30mTalk | Efficient Demand Evaluation of Fixed-Point Attributes Using Static Analysis SLE Idriss Riouak Department of Computer Science, Lund University, Sweden, Niklas Fors Lund University, Jesper Öqvist Cognibotics, Görel Hedin Lund University, Christoph Reichenbach Lund University | ||
15:00 30mTalk | The Design of a Self-Compiling C Transpiler Targeting POSIX Shell SLE Laurent Huberdeau Université de Montréal, Cassandre Hamel Université de Montréal, Stefan Monnier Université de Montréal, Marc Feeley Université de Montréal |