文法用の LALR パーサーを構築するための Java コードを作成したいと考えています。LALRパーサー用のJavaコードの書き方を学べる本やリンクを教えてください。
4 に答える
LALR パーサーを手で書くのは難しいですが、彼ならできます。手動でパーサーを構築するための理論を学びたい場合は、Grune と Jacobs による "Parsing Techniques: A Practical Guide" を検討してください。これは、一般的な構文解析手法に関する優れた本であり、LR 構文解析に関する章は特に優れています。
Java で書かれた LALR パーサーを取得することにもっと興味がある場合は、Java 用の汎用パーサー ジェネレーターである Java CUP を調べることを検討してください。
お役に立てれば!
LALR 機能は、テーブルの準備と入力の解析の 2 つの部分に分割できます。
最初の部分は複雑でエラーが発生しやすいため、どのように機能するかを知りたい場合でも、LALR 状態 (およびトークナイザー DFA) には実績のある作業テーブル ジェネレーターを使用することをお勧めします。
2 番目の部分は、いくつかの非常に単純なアルゴリズムを使用してこれらのテーブルを消費し、入力をトークン化して解析ツリー/具体的な構文ツリーに処理することで構成されます。そうしたい場合は、自分で実装する方が簡単ですが、その動作と機能を完全に制御できます。
解析タスクを実行するとき、私は個人的に無料のGOLD Parsing Systemを使用します。これは、文法を作成およびデバッグするための優れた UI を備えており、既存のエンジンまたは独自の実装によってロードおよび処理できるテーブル ファイルも生成します (ファイルこれらの CGT ファイルの形式は十分に文書化されています)。