To parse or to marshall, that is the question
Date: Wed, January 25, 2023
Room: Turing 0.E420
In reverse language engineering, with its applications to software quality assessment, static analysis, software maintenance and evolution, refactoring, and renovation, the first question is always how to obtain a high-quality parser for the given language(s). During the last two decades, a storm of open-source, open-access, open compiler frameworks for programming languages have shifted the balance from “better generate parser” to “better map an existing parser” completely. Nevertheless important quality considerations (like high-fidelity, low-noise, and efficiency) are still under scrutiny. In this talk we revisit a number of mapped parsers and rewritten grammars for (legacy) programming languages in the Rascal eco-system: Java, C/C++, PHP, Ada; and we discuss implementation effort and design decisions, next to common problems. Recently, it was made possible for Rascal programmers to use also “concrete syntax matching” on syntax trees that were acquired from external sources. This final blow completely unbalances the trade-off towards parser reuse and lets grammers in the corner of the domain-specific languages. Or doesn’t it?
Max de Krieger | Modernizing the WebDSL Front-End: A Case Study in SDF3 and Statix