找到以下语法的 FIRST & FOLLOW。S → A → A | B b B A → b B B → ε
解决方案
FIRST 的计算
A → B B
∴ FIRST(A)= {b}
乙→ε
∴ FIRST(B)= {ε}
S → A a A
FIRST 规则 (4) 的应用
即,比较 S → A a A 与 X → Y 1 Y 2 Y 3
∴第一 (S) = 第一 (A a A) = 第一 (A) = {b}
∴ FIRST(S)= {b}
S → B b B
∵ FIRST (B) 包含 ε 或 B 导出 ε ∴ 应用规则 (4c)
∴第一(S)=第一(B到B)
∴ FIRST (S) = FIRST (B) − {ε} ∪ FIRST(bB)
∴ FIRST (S) = FIRST (B) − {ε} ∪ {b} = {ε} − {ε} ∪ {b} = {b}
∴第一个 (A) = {b}
第一 (B) = {ε}
第一 (S) = {b}
FOLLOW的计算
应用规则 (1) FOLLOW FOLLOW (S) ={$} .....(1)
S → A a A
应用规则 (2) 遵循
比较 S → A a A 与 A → α B β
S → | ε | A | 一种 | A |
A → | Α | B | β |
∵ 第一 (β) = 第一 (aA) = {a}
不包含ε
∴FOLLOW规则2(a)
FOLLOW(A) = {FIRST (a A)} = {a}
∴ FOLLOW(A)= {a} ……………。(2)
应用 FOLLOW 规则 (3)
比较 S → A a A 与 A → α B β
S → | 一种 | a | 一种 |
A → | Α | 乙 |
∴ FOLLOW(A)= { FOLLOW(S)} ……………………… (3)
S → B b B
应用规则 (2) 遵循
比较 S → B b B 与 A → α B β
S → | 乙 | B | 乙 | B |
A → | Α | B | β |
A = S,
α = ε
乙 = 乙
β = bB
∵ 第一 (β) = 第一 (bB) = {b}
不包含ε
∴FOLLOW规则2(a)
FOLLOW(B) = {第一(b B)}
∴ FOLLOW(B)= {b} ……………。(4)
应用 FOLLOW 规则 (3)
比较 S → B a B 与 A → α B
S → | 乙 | a | 乙 |
A → | Α | 乙 |
∴ FOLLOW(B)= { FOLLOW(S)} ……………………… (5)
A → bB
规则 (2) 不能适用。因为我们不能将 A → b B 与 A → α B β 匹配
如果我们比较 α = b, B = B, β = ε。
在这里,β 将变为 ε,这是不可能的
应用 FOLLOW 规则 (3)
比较 A → b B 与 A → α B
A → | 乙 | B |
A → | α | 乙 |
∴ FOLLOW(B)= { FOLLOW(A)} ……………………… (6)
从陈述 (1) 到 (6)
FOLLOW(S) = {$} (1)
FOLLOW(A) = {a} (2)
FOLLOW(A) = {关注(S)}(3)
FOLLOW(B) = {b} (4)
FOLLOW(B)= { FOLLOW(S)} (5)
FOLLOW(B) = {跟随 (A)} (6)
∴ FOLLOW(S)= {$}
从 (1), (2), (3)
FOLLOW(A) = {$, a}
从 (4), (5), (6)
FOLLOW(B) = {$, a, b}
以上是 找到以下语法的 FIRST & FOLLOW。S → A → A | B b B A → b B B → ε 的全部内容, 来源链接: utcz.com/z/327387.html