30

私はJavaでコンパイラ設計プロジェクトに取り組んでいます。字句解析は(jflexを使用して)行われ、構文解析を行うのにどのyaccのようなツールが最適であるか(最も効率的で、最も使いやすいなど)、そしてその理由を考えています。

4

5 に答える 5

21

特にYACCのような動作(テーブル駆動型)が必要な場合、私が知っているのはCUPだけです。

Javaの世界では、 ANTLRJavaCCのような再帰下降パーサーに傾倒する人が増えているようです。

そして、効率がパーサジェネレータを選ぶ理由になることはめったにありません。

于 2009-10-28T19:37:50.060 に答える
5

過去に、私はレクサーとパーサーの両方にANLTRを使用しましたが、JFlexのホームページにはANTLRと相互運用できると書かれています。ANTLRのオンラインドキュメントがそれほど素晴らしいとは言えません。私は「決定的なANTLRリファレンス」に投資することになり ました。これはかなり役に立ちました。

于 2009-10-28T19:35:04.327 に答える
5

GNUBisonにはJavaインターフェイスがあります。

http://www.gnu.org/software/bison/manual/html_node/Java-Bison-Interface.html

これを使用して、Javaコードを生成できます。

于 2009-10-28T19:37:07.253 に答える
3

jaccもあります。

Jaccは、可能な限りyaccに近いものですが、純粋なJavaで実装され、Javaパーサーを生成します。

jFlexとのインターフェースが良好です

http://web.cecs.pdx.edu/~mpj/jacc/

于 2012-11-13T00:05:12.943 に答える
2

もう1つのオプションは、GOLDパーサーです。

多くの選択肢とは異なり、GOLDパーサーは文法から解析テーブルを生成し、それらをバイナリの実行不可能なファイルに配置します。サポートされている各言語には、バイナリテーブルを読み取り、ソースファイルを解析するエンジンがあります。

私は特にJava実装を使用していませんが、Delphiエンジンを使用してかなり良い結果が得られました。

于 2009-10-28T20:01:57.660 に答える