Chapter 4(Part 3):自底向上的語法分析

自頂向下語法分析的分析類型

最右推導的反序(從葉子到根)
1

自頂向下和自底向上的比較

語法分析類別 語法分析樹
自底向下 2
自頂向下 3

自底向上語法分析

句柄(handle):分析樹最右邊有父子兩代的子樹,從左到右

1. 加S’ → S

不管左遞歸、左因子

2. 狀態轉換圖(DFA)

狀態轉換圖沒有ε:因爲他是DFA,DFA沒有ε轉換
在這裏插入圖片描述

3. 分析表(狀態轉換表,包含$)

三種可能操作:

  • Shift:移進
    如S2,表示移入一個字符,並轉換到狀態2
  • Reduce: 規約
    將分析串包含棧頂的一個字串按一個產生式替換成一個非終結符
    如R2,按編號爲2的產生式規約。規約後的狀態,由前一個沒參與規約的狀態,GOTO當前規約所得非終結符得到
  • Accept: 狀態裏有S’ → S·

4. 分析過程(開始狀態爲0)

在這裏插入圖片描述

各種自底向上算法

算法 特點
LR(0) 狀態轉換圖:加入搜索符·,表示當前位置
Reduce操作,直接填滿該狀態所有Action
SLR(1) 狀態轉換圖同LR(0)
Reduce操作,只填在屬於規約出非終極符Follow集的Action
LR(1) 狀態轉換圖:加入一個向前看符號:該產生式左邊的非終結符,後一個終結符。
向前看符號是終結符Follow集的子集,所以比SLR更精細。用於表示當前上下文的具體情況)
狀態表:Reduce只填在向前看符號
LARL(1) 合併同心集(只有向前看符號不同的項目)

判斷是不是某一種自底向上算法?

狀態圖(或者狀態表)沒有衝突(衝突具體爲移進-規約、規約-規約衝突)

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