At SLE in 2014, Ridge presented the P3 combinator library with which parsers can be developed for left-recursive, non-deterministic and ambiguous grammars. A combinator expression in P3 yields a binarised grammar reflecting the expression’s structure. The grammar is given to an underlying, generalised parsing procedure computing all derivations.
In this paper we present a combinator library with a similar architecture to P3, adjusting it to avoid grammar binarisation. Avoiding binarisation has a significant positive effect on the running times of the underlying parsing procedure, which we demonstrate using real-world grammars. Binarisation is avoided by restricting the applicability of combinators, resulting in combinator expressions closely resembling BNF fragments. Usability is recovered by defining coercions that automatically convert expressions where necessary. As the underlying parsing procedure, we use a purely functional variant of generalised top-down (GLL) parsing.
Presentation (pres.pdf) | 270KiB |
Mon 5 Nov Times are displayed in time zone: Guadalajara, Mexico City, Monterrey change
10:30 - 12:00: ParsingSLE 2018 at Studio 1 Chair(s): Tijs van der StormCWI & University of Groningen | |||
10:30 - 11:00 Talk | Declarative Specification of Indentation Rules: A Tooling Perspective on Parsing and Pretty-Printing Layout-Sensitive Languages SLE 2018 Luis Eduardo de Souza AmorimDelft University of Technology, Netherlands, Michael J. SteindorferDelft University of Technology, Sebastian ErdwegTU Delft, Eelco VisserDelft University of Technology Link to publication DOI | ||
11:00 - 11:30 Talk | GLL Parsing with Flexible Combinators SLE 2018 L. Thomas van BinsbergenRoyal Holloway University of London, Elizabeth ScottRoyal Holloway University of London, Adrian Johnstone File Attached | ||
11:30 - 12:00 Talk | Morbig: A Static Parser for POSIX Shell SLE 2018 Yann Régis-GianasIRIF, University Paris Diderot and CNRS, France / INRIA PI.R2, Nicolas JeannerodIRIF, University Paris Diderot and CNRS, France, Ralf TreinenIRIF |