We gratefully acknowledge support from
the Simons Foundation and member institutions.
Full-text links:

Download:

Current browse context:

cs.FL

Change to browse by:

References & Citations

DBLP - CS Bibliography

Bookmark

(what is this?)
CiteULike logo BibSonomy logo Mendeley logo del.icio.us logo Digg logo Reddit logo

Computer Science > Formal Languages and Automata Theory

Title: LL(1) Parsing with Derivatives and Zippers

Abstract: In this paper, we present an efficient, functional, and formally verified parsing algorithm for LL(1) context-free expressions based on the concept of derivatives of formal languages. Parsing with derivatives is an elegant parsing technique, which, in the general case, suffers from cubic worst-case time complexity and slow performance in practice. We specialise the parsing with derivatives algorithm to LL(1) context-free expressions, where alternatives can be chosen given a single token of lookahead. We formalise the notion of LL(1) expressions and show how to efficiently check the LL(1) property. Next, we present a novel linear-time parsing with derivatives algorithm for LL(1) expressions operating on a zipper-inspired data structure. We prove the algorithm correct in Coq and present an implementation as a parser combinators framework in Scala, with enumeration and pretty printing capabilities.
Subjects: Formal Languages and Automata Theory (cs.FL); Data Structures and Algorithms (cs.DS)
Cite as: arXiv:1911.12737 [cs.FL]
  (or arXiv:1911.12737v1 [cs.FL] for this version)

Submission history

From: Romain Edelmann [view email]
[v1] Thu, 28 Nov 2019 14:57:03 GMT (81kb,D)
[v2] Thu, 21 Jan 2021 12:54:49 GMT (83kb,D)

Link back to: arXiv, form interface, contact.