WG211/M21Yallop
From WG 2.11
Lexers and parsers are typically defined separately and connected by a token stream. This separate definition is important for modularity, but harmful for performance.
We show how to fuse together separately-defined lexers and parsers, drastically improving performance without compromising modularity. Our staged parser combinator library, FLaP, provides a standard parser combinator interface, but generates specialized token-free code that runs several times faster than ocamlyacc on a range of benchmarks.