編譯原理(四)自頂向下語法分析方法、LL(1)文法的判別、非LL(1)文法轉換爲LL(1)文法

本文要點

  1. 理解 “能使用自頂向下分析技術的文法必須是LL(1)文法
  2. LL(1)文法的充要條件
  3. LL(1)文法的判別
  4. 某些 非LL(1)文法LL(1)文法 的等價變換
    1.提取左公共因子
    2.消除左遞歸(直接左遞歸、間接左遞歸)
  5. 不確定的自頂向下分析思想
  6. 確定的自頂向下分析方法
    1.遞歸子程序法
    2.預測分析法[判別LL(1)文法;構造預測分析表;分析輸入串]
    在這裏插入圖片描述

4.1 確定的自頂向下分析思想

主要思想:
從文法的開始符號出發,如何根據當前的單詞符號
唯一地確定選用哪個產生式來替換相應的VN向下推導。
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

4.2 LL(1)文法的判別

判別步驟:

  1. 求出能推出ε的非終結符
  2. 計算FIRST集
  3. 計算FOLLOW集
  4. 計算SELECT集
  5. 判別是否是LL(1)文法
    在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述

4.3 某些非LL(1)文法到LL(1)文法的等價變換

在這裏插入圖片描述

4.3.1 提取左公共因子

在這裏插入圖片描述
在這裏插入圖片描述

4.3.2 提取隱含的左公共因子

在這裏插入圖片描述

4.3.3 不能在有限步驟內提取完左公共因子的文法

在這裏插入圖片描述

4.3.4 消除左遞歸

在這裏插入圖片描述

4.3.5 消除直接左遞歸

在這裏插入圖片描述

4.3.6 消除間接左遞歸

在這裏插入圖片描述

4.3.7 消除文法中一切左遞歸

在這裏插入圖片描述
在這裏插入圖片描述

4.4 確定的自頂向下分析方法

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
構造預測分析表的方法:
對每個VT或“#”用符號a表示。
若a∈SELECT(A–>α),則把A–>α放入M[A,a]中。
(所有空白的M[A,a]表示出錯。)
在這裏插入圖片描述
在這裏插入圖片描述

4.5 不確定的自頂向下分析思想

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章