2

文法用の LALR パーサーを構築するための Java コードを作成したいと考えています。LALRパーサー用のJavaコードの書き方を学べる本やリンクを教えてください。

4

4 に答える 4

3

LALR パーサーを手で書くのは難しいですが、彼ならできます。手動でパーサーを構築するための理論を学びたい場合は、Grune と Jacobs による "Parsing Techniques: A Practical Guide" を検討してください。これは、一般的な構文解析手法に関する優れた本であり、LR 構文解析に関する章は特に優れています。

Java で書かれた LALR パーサーを取得することにもっと興味がある場合は、Java 用の汎用パーサー ジェネレーターである Java CUP を調べることを検討してください。

お役に立てれば!

于 2011-03-23T05:17:59.550 に答える
1

前述のように、LALAR パーサーを生成するには、常にパーサー ジェネレーターを使用します。Java 用のそのようなツールのいくつかは次のとおりです。

于 2011-03-27T18:32:07.500 に答える
1

LALR 機能は、テーブルの準備と入力の解析の 2 つの部分に分割できます。

最初の部分は複雑でエラーが発生しやすいため、どのように機能するかを知りたい場合でも、LALR 状態 (およびトークナイザー DFA) には実績のある作業テーブル ジェネレーターを使用することをお勧めします。

2 番目の部分は、いくつかの非常に単純なアルゴリズムを使用してこれらのテーブルを消費し、入力をトークン化して解析ツリー/具体的な構文ツリーに処理することで構成されます。そうしたい場合は、自分で実装する方が簡単ですが、その動作と機能を完全に制御できます。

解析タスクを実行するとき、私は個人的に無料のGOLD Parsing Systemを使用します。これは、文法を作成およびデバッグするための優れた UI を備えており、既存のエンジンまたは独自の実装によってロードおよび処理できるテーブル ファイルも生成します (ファイルこれらの CGT ファイルの形式は十分に文書化されています)。

于 2011-03-27T18:23:47.537 に答える