A practical method for LR and LL syntactic error diagnosis and recovery
ACM Transactions on Programming Languages and Systems (TOPLAS)
Determining the extent of lookahead in syntactic error repair
ACM Transactions on Programming Languages and Systems (TOPLAS)
Substring parsing for arbitrary context-free grammars
ACM SIGPLAN Notices
A practical method for constructing efficient LALR(K) parsers with automatic error recovery
A practical method for constructing efficient LALR(K) parsers with automatic error recovery
Comparison of syntactic error handling in LR parsers
Software—Practice & Experience
Global Context Recovery: A New Strategy for Syntactic Error Recovery by Table-Drive Parsers
ACM Transactions on Programming Languages and Systems (TOPLAS)
Syntax-directed least-errors analysis for context-free languages: a practical approach
Communications of the ACM
A forward move algorithm for LR error recovery
POPL '78 Proceedings of the 5th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Packrat parsing:: simple, powerful, lazy, linear time, functional pearl
Proceedings of the seventh ACM SIGPLAN international conference on Functional programming
Meta-programming with Concrete Object Syntax
GPCE '02 Proceedings of the 1st ACM SIGPLAN/SIGSOFT conference on Generative Programming and Component Engineering
Deterministic, Error-Correcting Combinator Parsers
Advanced Functional Programming, Second International School-Tutorial Text
SIGPLAN '79 Proceedings of the 1979 SIGPLAN symposium on Compiler construction
Generating Robust Parsers using Island Grammars
WCRE '01 Proceedings of the Eighth Working Conference on Reverse Engineering (WCRE'01)
Building Documentation Generators
ICSM '99 Proceedings of the IEEE International Conference on Software Maintenance
Declarative, formal, and extensible syntax definition for aspectJ
Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
Using The Meta-Environment for Maintenance and Renovation
CSMR '07 Proceedings of the 11th European Conference on Software Maintenance and Reengineering
IMP: a meta-tooling platform for creating language-specific ides in eclipse
Proceedings of the twenty-second IEEE/ACM international conference on Automated software engineering
Practical Scope Recovery Using Bridge Parsing
Software Language Engineering
Proceedings of the 24th ACM SIGPLAN conference on Object oriented programming systems languages and applications
The spoofax language workbench: rules for declarative specification of languages and IDEs
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Pure and declarative syntax definition: paradise lost and regained
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Integrated language definition testing: enabling test-driven language development
Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applications
Automated evaluation of syntax error recovery
Proceedings of the 27th IEEE/ACM International Conference on Automated Software Engineering
Natural and Flexible Error Recovery for Generated Modular Language Environments
ACM Transactions on Programming Languages and Systems (TOPLAS)
Hi-index | 0.00 |
Parser generators are an indispensable tool for rapid language development. However, they often fall short of the finesse of a hand-crafted parser, built with the language semantics in mind. One area where generated parsers have provided unsatisfactory results is that of error recovery. Good error recovery is both natural, giving recovery suggestions in line with the intention of the programmer; and flexible, allowing it to be adapted according to language insights and language changes. This paper describes a novel approach to error recovery, taking into account not only the context-free grammar, but also indentation usage. We base our approach on an extension of the SGLR parser that supports fine-grained error recovery rules and can be used to parse complex, composed languages. We take a divide-and-conquer approach to error recovery: using indentation, erroneous regions of code are identified. These regions constrain the search space for applying recovery rules, improving performance and ensuring recovery suggestions local to the error. As a last resort, erroneous regions can be discarded. Our approach also integrates bridge parsing to provide more accurate suggestions for indentation-sensitive language constructs such as scopes. We evaluate our approach by comparison with the JDT Java parser used in Eclipse.