Loading article…
Lemonは、 SQLiteプロジェクトの一部として維持されているパーサー生成器で、入力コンテキストフリー文法からプログラミング言語Cで先読み LR パーサー( LALR パーサー) を生成します。生成器は非常にシンプルで、1 つの C ソースファイルに実装され、別のファイルが出力のテンプレートとして使用されます。字句解析は外部で実行されます。[ 1 ]
LemonはBisonやYaccといったプログラムに似ていますが、どちらとも互換性がありません。一般的なコーディングエラーを防ぐため、文法入力形式が異なります。その他の特徴としては、リエントラントでスレッドセーフな出力パーサー、メモリリークを回避しやすくするための非終端デストラクタの概念などがあります。[ 2 ]
SQLiteは、Lemonと手作業でコーディングされたトークナイザーを使用してSQL文字列を解析します。
Lemonは、 re2cおよびPerplexというre2cラッパーとともに、プラットフォームに依存せず、FlexおよびBisonのコンパイルが容易な代替手段としてBRL-CADで使用されています[ 3 ] [ 4 ] [ 5 ]。この組み合わせはSTEPcodeでも使用されています[ 6 ] 。
OpenFOAM 式評価[ 7 ]は、 ragelと、 C 統合に影響を与えずに C++ 統合を容易にするために最小限の変更を加えた lemon のバージョン[ 8 ]を組み合わせて使用しています。 [ 9 ]パーサー文法は、m4マクロで拡張されています。