LR-Parsing テーブルの生成について私が知っている (読む) 限りでは、reduce アクションが特定の状態のセルに書き込まれる列 (= トークン)は、FOLLOW セットにあるターミナルに依存するということです。縮小シンボルの。
あれは正しいですか?*
もしそうなら、私の頭に浮かぶ次の質問は、次の状態を決定するのは何かということです.還元後に遷移を起こすのは何ですか.
たとえば、状態 5 では、r6 はシンボルを削減してから状態 6 に遷移することを意味します (さらに遷移する状態への goto-table を考慮する場合があります)。
解析テーブルまたは DFA (LR-Parser である) の状態は、グラフ表現のパスです。ボトムアップ パーサーとして、LR パーサーは、開始シンボル/受け入れ状態に戻るパスを見つけることによって機能します。解析テーブルは、そのようなすべてのパスを見つけようとします。
そして、結果として正しい還元状態を選択することは、私には複雑に思えます。
それは、現在の状態に先行する状態/アイテムセットと、まだ読み取られていない入力トークンに応じて現在の状態に完全に続く状態に密接に依存するためです。
reduce アクションに比べれば、shift アクションや goto アクションは、ドット位置を移動するときに現れる遷移にすぎないため、簡単に見えます。
ありがとう
PS: *それが正しければ、追加機能として FOLLOW-Set を使用して LR1Items を生成するのは「二重のトラブル」ではありませんか?