予測パーサLL(1)条件
-
29-09-2020 - |
質問
予測パーサLL(1)を使用しているとします。
のなぜ必要なのか$ first(\ alpha)\ cap first(\ beta)=emptyset $
すべての $ \ alpha、\ beta $ 代替製品の右側、すなわち、同じ非端末に関連付けられているプロダクション。この状態が必要なのはなぜですか?
解決
これは直感的な説明です:
それは基本的にLL(1)パーサーの性質から次のようになります.LL(1)パーサーLL(1)解析テーブルを構築します。テーブルの行は非終端であり、列は端末です。入力内の各シンボルに遭遇したときのLL(1)のテーブルルックアップを行うこととしてLL(1)の解析を考えることができます。現在の非介護と入力端子によって決定されたエントリを調べ、対応する生産規則を適用します。したがって、LL(1)テーブルには各エントリで複数の製造規則を含めることはできません。それ以外の場合、パーサーはどのルールを適用するかを決めることができません。
$ \ alpha $ の右側の場合、 $ \ beta $ が交差する最初のセットで、LL(1)テーブル(つまり、重複/競合エントリ)の単一のエントリに複数のルールがあります。
まだこの状態が必要な理由について不明な場合は、が右側に交差する最初のセットで例を構築し、手動でLLを構築しようとすることをお勧めします。 (1)テーブルの解析またはオンライン視覚化ツール;あなたはすぐに衝突を見つけるでしょう。
所属していません cs.stackexchange