B → q


解答

步驟1 - 構造擴充文法

(0) S′ → S

(1) S → xAy

(2) S → xBy

(3) S → xAz

(4) A → qs

(5) A → q

(6) B → q

步驟2 - 查詢閉包和goto函式以構造LR(0)專案。此處方框代表新狀態,圓圈代表重複狀態。

  • 步驟3 - FOLLOW集的計算

S → xAy

FOLLOW(S) = {$} (1)

應用FOLLOW的規則(2a)。

將S → xAy與A → αBβ進行比較。

∴ FIRST(β) = FIRST(y) = {y}

∴ FOLLOW(A) = {y} (2)

規則(3)不可應用

  • 因為S → xAy不能與A → αB比較

S → xBy

應用FOLLOW的規則(2a)。

將S → xBy與A → αBβ進行比較。

∴ FIRST(β) = {y}

∴ FOLLOW(B) = {y} (3)

  • 步驟3 - FOLLOW集的計算

FOLLOW(S) = {$} (1)

規則(3)不可應用。

S → xAz

∴ FOLLOW(B) = {y} (3)

  • ∴ FIRST(β) = {z}

∴ FOLLOW(A) = {z} (4)

A → qS

規則(2a)不可應用。因為A → qS不能與A → αBβ比較。

應用規則(3)

將A → qS與A → αB進行比較

∴ A = A, α = q, B = S

∴ FOLLOW(S) = {FOLLOW(A)} (5)

FOLLOW的規則(2a)和規則(3)不能應用於產生式A → q和B → q。

結合語句(1)到(5)

FOLLOW(A) = {y, z}

FOLLOW(S) = {$, y, z}

步驟4 - 構造SLR(1)分析表

Ginni

啟動你的職業生涯

完成課程獲得認證

開始學習
廣告