An efficient context-free parsing algorithm
Communications of the ACM
Efficient Parsing for Natural Language: A Fast Algorithm for Practical Systems
Efficient Parsing for Natural Language: A Fast Algorithm for Practical Systems
Elkhound: A Fast, Practical GLR Parser Generator
Elkhound: A Fast, Practical GLR Parser Generator
Parsing expression grammars: a recognition-based syntactic foundation
Proceedings of the 31st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Journal of Functional Programming
Applicative programming with effects
Journal of Functional Programming
SPPF-Style Parsing From Earley Recognisers
Electronic Notes in Theoretical Computer Science (ENTCS)
Combinator Parsing: A Short Tutorial
Language Engineering and Rigorous Software Development
Recognition is not parsing - SPPF-style parsing from cubic recognisers
Science of Computer Programming
Semantics and algorithms for data-dependent grammars
Proceedings of the 37th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Parser combinators for ambiguous left-recursive grammars
PADL'08 Proceedings of the 10th international conference on Practical aspects of declarative languages
A new method for dependent parsing
ESOP'11/ETAPS'11 Proceedings of the 20th European conference on Programming languages and systems: part of the joint European conferences on theory and practice of software
Delayed semantic actions in Yakker
Proceedings of the Eleventh Workshop on Language Descriptions, Tools and Applications
Hi-index | 0.00 |
The recovery of structure from flat sequences of input data is a problem that almost all programs need to solve. Computer Science has developed a wide array of declarative languages for describing the structure of languages, usually based on the context-free grammar formalism, and there exist parser generators that produce efficient parsers for these descriptions. However, when faced with a problem involving parsing, most programmers opt for ad-hoc hand-coded solutions, or use parser combinator libraries to construct parsing functions. This paper develops a hybrid approach, treating grammars as collections of active right-hand sides, indexed by a set of non-terminals. Active right-hand sides are built using the standard monadic parser combinators and allow the consumed input to affect the language being parsed, thus allowing for the precise description of the realistic languages that arise in programming. We carefully investigate the semantics of grammars with active right-hand sides, not just from the point of view of language acceptance but also in terms of the generation of parse results. Ambiguous grammars may generate exponentially, or even infinitely, many parse results and these must be efficiently represented using Shared Packed Parse Forests (SPPFs). A particular feature of our approach is the use of Reynolds-style parametricity to ensure that the language that grammars describe cannot be affected by the representation of parse results.