paperbot · PL 论文追踪

RSS

flap: A Deterministic Parser with Fused Lexing

PLDI 7(PLDI)2023
Jeremy Yallop, Ningning Xie, Neel Krishnaswami

尚未生成 AI 速览(可能缺少 API key 或等待下次运行补跑)。

原文摘要(Abstract)

Lexers and parsers are typically defined separately and connected by a token stream. This separate definition is important for modularity and reduces the potential for parsing ambiguity. However, materializing tokens as data structures and case-switching on tokens comes with a cost. We show how to fuse separately-defined lexers and parsers, drastically improving performance without compromising modularity or increasing ambiguity. We propose a deterministic variant of Greibach Normal Form that ensures deterministic parsing with a single token of lookahead and makes fusion strikingly simple, and prove that normalizing context free expressions into the deterministic normal form is semantics-preserving. Our staged parser combinator library, flap, provides a standard interface, but generates specialized token-free code that runs two to six times faster than ocamlyacc on a range of benchmarks.

链接与引用

DOI 原文 ·

BibTeX
@article{paperbot1989,
  title = {flap: A Deterministic Parser with Fused Lexing},
  author = {Jeremy Yallop and Ningning Xie and Neel Krishnaswami},
  journal = {Proceedings of the ACM on Programming Languages},
  volume = {7},
  number = {PLDI},
  year = {2023},
  doi = {10.1145/3591269}
}