Trisha Shetty (Editor)

Lemon Parser Generator

Updated on
Edit
Like
Comment
Share on FacebookTweet on TwitterShare on LinkedInShare on Reddit
Developer(s)
  
D. Richard Hipp

Operating system
  
Cross-platform

License
  
Public domain

Written in
  
C

Type
  
Parser generator

Website
  
www.hwaci.com/sw/lemon/

Lemon is a parser generator, maintained as part of the SQLite project, that generates an LALR parser in the C programming language from an input context-free grammar. The generator is quite simple, implemented in a single C source file with another file used as a template for output. Lexical analysis is performed externally.

Lemon is similar to bison and yacc; however it is not compatible with these programs. The grammar input format is different, so as to help prevent common coding errors. Other distinctive features include a reentrant, thread-safe output parser, and the concept of "non-terminal destructors" that try to make it easier to avoid leaking memory.

SQLite uses Lemon with a hand-coded tokenizer to parse SQL strings.

In 2008 a Lemon-generated parser was suggested to replace the bison-generated parser used for the PHP programming language; as of 2010 this project was listed as "in the works".

Lemon, in combination with re2c and a re2c wrapper called Perplex, are used in BRL-CAD as platform-agnostic and easily compilable alternatives to Flex and Bison. This combination is also used with STEPcode.

References

Lemon Parser Generator Wikipedia