私は数年前、学部生時代に Flex や Bison に取り組みました。とはいえ、今はあまり覚えていません。最近、ANTLRのことをよく耳にするようになりました。
- Flex/Bison をブラッシュアップするために、ANTLR またはそれ以上を学習することをお勧めしますか?
- ANTLR の機能は Flex/Bison より多い/少ないですか?
私は数年前、学部生時代に Flex や Bison に取り組みました。とはいえ、今はあまり覚えていません。最近、ANTLRのことをよく耳にするようになりました。
ANTLRv3 は LL(k) であり、LL(*) に設定できます。特に後者は、基本的に EBNF をそのまま使用できるため、パーサーを書き込むのが非常に簡単です。
また、ANTLR は、ゼロから作成する再帰降下パーサーに非常によく似たコードを生成します。非常に読みやすく、デバッグが容易で、解析が機能しない、または正しく機能しない理由を確認できます。
Flex/Bison (またはその他の LALR パーサー) の利点は、高速であることです。
ANTLR には、プロジェクトに含める必要があるランタイム ライブラリ JAR があります。
ANTLR の再帰降下パーサーは、Flex/Bison によって生成された「ボトムアップ」パーサーよりもデバッグが容易ですが、文法規則はわずかに異なります。
Java 用の Flex/Bison スタイル (LALR) パーサー ジェネレーターが必要な場合は、JavaCCを参照してください。
レガシー ファイルと自然言語の解析など、情報処理要件の一部に ANTLR を使用することにしました。学習曲線は急ですが、私たちはそれを乗り越えようとしています。それは、私たちが行う必要があることに対する、より現代的で用途の広いアプローチだと感じています. あなたが尋ねるように、不利な点は主に避けられないように思われる学習曲線です。