Re:The Lemon Parser Generator
by arcticbull on Tuesday September 29, 2015 @12:41PM
(#10297536)
Hey! I've written a bunch of stuff with lemon over the last few years and at some point. Lemon has been my go-to parser generator for a long time. At some point, I:
* collected some examples I'd found
* split up the single .c file into constituent parts
* improved error reporting and modernized some syntax
* started working on adding Rust support as a learn-Rust project.
* fixed 64-bit conversion warnings
https://github.com/martinmroz/lemon
It's definitely not packaged up, but hopefully someone finds this stuff valuable. I'd love to see Lemon gain more widespread use. I want to help address the biggest issues I had getting started using it, which were lack of community, lack of documentation/examples, difficulty contributing and lack of a package/distribution medium.
Lemon was intended as a yacc-replacement. The advantages of lemon over yacc are that lemon has a less error-prone syntax (it uses symbolic names rather than $1, $2, etc), and that lemon generates a reentrant and thread-safe parser. (At the time, yacc/bison parsers were neither reentrant nor thread-safe. I don't know if that has been fixed in the intervening decades.)
Lemon has always been open source. But it languished with little attention for 10 years until I used it to generate the parser for SQLite. Then suddenly people started to notice and use it.
Lemon does not have a separate version control system. The source code to Lemon (a single file of C plus a template file for the generated parser) are part of the SQLite source tree.