Parsing Expression Grammars (PEGs) describe top-down parsers. Unfortunately,
the error-reporting techniques used in conventional top-down parsers do not
directly apply to parsers based on Parsing Expression Grammars (PEGs), so they
have to be somehow simulated. While the PEG formalism has no account of
semantic actions, actual PEG implementations add them, and we show how to
simulate an error-reporting heuristic through these semantic actions.
We also propose a complementary error reporting strategy that may lead to
better error messages: labeled failures. This approach is inspired by exception
handling of programming languages, and lets a PEG define different kinds of
failure, with each ordered choice operator specifying which kinds it catches.
Labeled failures give a way to annotate grammars for better error reporting, to
express some of the error reporting strategies used by deterministic parser
combinators, and to encode predictive top-down parsing in a PEG.Comment: Preprint (plus appendix) submitted to Science of Computer Programmin