B → ε


解答

FIRST集的計算

  • A → b B

∴ FIRST(A) = {b}

  • B → ε

∴ FIRST(B) = {ε}

  • S → A a A

應用FIRST集的規則(4)

即,將S → A a A與X → Y1Y2Y3進行比較

∴ FIRST(S) = FIRST(A a A) = FIRST(A) = {b}

∴ FIRST(S) = {b}

  • S → B b B

∵ FIRST(B)包含ε 或 B 可推匯出 ε ∴ 應用規則(4c)

∴ FIRST(S) = FIRST(B b B)

∴ FIRST(S) = FIRST(B) - {ε} ∪ FIRST(bB)

∴ FIRST(S) = FIRST(B) - {ε} ∪ {b} = {ε} - {ε} ∪ {b} = {b}

∴ FIRST(A) = {b}

FIRST(B) = {ε}

FIRST(S) = {b}

FOLLOW集的計算

應用規則(1) FOLLOW(S) = {$}

  • S → A a A

應用規則(2) FOLLOW

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

S →εAaA
A →αBβ

∵ FIRST(β) = FIRST(aA) = {a}

不包含ε

∴ 應用FOLLOW規則2(a)

FOLLOW(A) = {FIRST(aA)} = {a}

∴ FOLLOW(A) = {a}

應用FOLLOW規則(3)

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

S →AaA
A →α
B

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

  • S → B b B

應用規則(2) FOLLOW

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

S →εBbB
A →αBβ

A = S,

α = ε

B = B

β = bB

∵ FIRST(β) = FIRST(bB) = {b}

不包含ε

∴ 應用FOLLOW規則2(a)

FOLLOW(B) = {FIRST(bB)}

∴ FOLLOW(B) = {b}

應用FOLLOW規則(3)

將S → B a B與A → αB進行比較

S →BaB
A →α
B

∴ FOLLOW(B) = {FOLLOW(S)}

  • A → bB

無法應用規則(2)。因為無法將A → b B與A → αBβ匹配。

如果比較α = b, B = B, β = ε。

這裡,β將變為ε,這是不可能的。

應用FOLLOW規則(3)

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

A →bB
A →αB

∴ FOLLOW(B) = {FOLLOW(A)}

根據(1)到(6)

FOLLOW(S) = {$}

FOLLOW(A) = {a}

FOLLOW(A) = {FOLLOW(S)}

FOLLOW(B) = {b}

FOLLOW(B) = {FOLLOW(S)}

FOLLOW(B) = {FOLLOW(A)}

∴ FOLLOW(S) = {$}

根據(1),(2),(3)

FOLLOW(A) = {$, a}

根據(4),(5),(6)

FOLLOW(B) = {$, a, b}

更新於:2021年11月1日

781 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告