私はオープンソースのLR(k)パーサジェネレータであるLRSTARの作者です。人々がそれに興味を示しているので、私はここ LRSTARで製品をオンラインに戻しました。
LALRパーサーとDFAレクサーの速度を長年研究してきました。Tom Pennelloの論文は非常に興味深いものですが、コンパイラー向けの実際のソリューションというよりは、学術的な演習です。ただし、必要なのがパターン認識機能だけである場合は、それが最適なソリューションになる可能性があります。
問題は、実際のコンパイラは通常、着信シンボルのシンボルテーブルルックアップ、エラーリカバリ、期待リスト(ステートメント完了情報)の提供、抽象構文ツリーの構築など、パターン認識以上のことを行う必要があることです。解析。
1989年に、LRSTARパーサーの解析速度を「yacc」と比較したところ、「yacc」パーサーの2倍の速度であることがわかりました。LRSTARパーサーは、論文「ポータブルコンパイラー用のパーサーテーブルの最適化」で公開されているアイデアを使用します。
字句解析(字句解析)の速度については、2009年に、「re2c」が「flex」によって生成される速度の約2倍の最速の字句を生成していることを発見しました。当時、私はLRSTARレクサージェネレーターセクションを書き直していて、「re2c」とほぼ同じ速度ではるかに小さいレクサーを作成する方法を見つけました。ただし、LRSTARが生成するテーブル駆動型レクサーは、ほぼ同じくらい高速で、コードのコンパイルがはるかに高速であるため、私は好みます。
ところで、LRSTARによって生成されたコンパイラフロントエンドは、毎秒2,400,000行以上の速度でソースコードを処理できます。LRSTARによって生成されたレクサーは、1秒あたり30,000,000トークンを処理できます。テスト用コンピューターは3.5GHzマシン(2010年以降)でした。