We describe the first approach to automatically repair bugs in context-free grammars: given a grammar that fails some tests in a given test suite, we iteratively and gradually transform the grammar until it passes all tests. Our core idea is to build on spectrum-based fault localization to identify promising repair sites (i.e., specific positions in rules), and to apply grammar patches at these sites whenever they satisfy explicitly formulated pre-conditions necessary to potentially improve the grammar.
We have implemented this approach in the gfixr system, and successfully used it to fix grammars students submitted as homeworks in a compiler engineering course, and to map one Pascal dialect grammar against another dialect. gfixr can be configured to explore the repair space in different ways, and can also take advantage of counterexamples to enable restriction patches that make the grammar less permissive.
Mon 5 DecDisplayed time zone: Auckland, Wellington change
13:30 - 14:30 | SLE papersCOVID Time Papers In Person at Lecture Theatre 2 Chair(s): Peter Thiemann University of Freiburg, Germany | ||
13:30 30mTalk | Automatic Grammar Repair COVID Time Papers In Person Moeketsi Raselimo Stellenbosch University, South Africa, Bernd Fischer Stellenbosch University, South Africa Link to publication DOI | ||
14:00 30mTalk | Grammar-based testing for little languages: an experience report with student compilers COVID Time Papers In Person Phillip van Heerden Stellenbosch University, Moeketsi Raselimo Stellenbosch University, South Africa, Konstantinos (Kostis) Sagonas Uppsala University and Nat. Tech. Univ. of Athens, Bernd Fischer Stellenbosch University, South Africa Link to publication DOI |