Litcius/Paper detail

Staged selective parser combinators

Jamie Willis, Nicolas Wu, Matthew C. Pickering

2020Proceedings of the ACM on Programming Languages18 citationsDOIOpen Access PDF

Abstract

Parser combinators are a middle ground between the fine control of hand-rolled parsers and the high-level almost grammar-like appearance of parsers created via parser generators. They also promote a cleaner, compositional design for parsers. Historically, however, they cannot match the performance of their counterparts. This paper describes how to compile parser combinators into parsers of hand-written quality. This is done by leveraging the static information present in the grammar by representing it as a tree. However, in order to exploit this information, it will be necessary to drop support for monadic computation since this generates dynamic structure. Selective functors can help recover lost functionality in the absence of monads, and the parser tree can be partially evaluated with staging. This is implemented in a library called Parsley.

Topics & Concepts

Computer scienceCombinatory logicParser combinatorParsingProgramming languageLR parserTop-down parsingCompilerGrammarNatural language processingArtificial intelligenceLinguisticsPhilosophyLogic, programming, and type systemssemigroups and automata theoryParallel Computing and Optimization Techniques