私は現在、いくつかの言語のパーサーを作成中です。私はこの言語の文法を与えられましたが、この文法にはいくつかの左再帰と非 LL(*) 構造が含まれているため、ANTLR はバックトラッキングを使用してもうまく機能しません。
これらの左再帰と非 LL(*) 構成を削除することは、一見したよりも難しいため、LR(k) または LALR(k) パーサー ジェネレーターを試してみたいと思います。k が高いほど良い。
これらの要件を満たすパーサージェネレーターを誰かに勧めてもらえますか?
- 生成されたパーサーは、ある程度高い(または任意の)kを持つLR(k)パーサー、または少なくともある程度高いkを持つLALR(k)パーサーであることが好ましい。
- 生成されたパーサーは C または C++ で記述されており、C で記述されている場合は C++ コードにリンク可能です。
- ANTLR に似た機能セット (特に AST の書き換え) があればよいでしょう。
- パフォーマンスは最も差し迫った問題ではありません。生成されたパーサーは、多くのメモリと CPU パワーを備えたデスクトップ マシンで使用することを目的としています。
ありがとう、
ジョスト
PS: 自分でググることができないので質問しているわけではありませんが、自分でいくつかのジェネレーターをテストする時間が残っていないためです。したがって、推奨されるパーサー ジェネレーターの使用経験がある場合にのみ回答してください。