(1)对下面文法的每个非终结符,构造其首符集FIRST和随符集FOLLOW。 G: A→BCc|gDB B→bCDE|ε C→DaB|ca D→dD|ε E→gAf|c
时间: 2024-06-18 12:02:31 浏览: 179
对于文法G,每个非终结符的FIRST集和FOLLOW集如下:
首先,文法中的终结符有c、g、b、d、f和a。
1. 对于非终结符A:
- A → BCc,则FIRST(A) = {g, d}
- A是文法的起始符号,因此FOLLOW(A) = {$}
2. 对于非终结符B:
- B → bCDE,则FIRST(B) = {b, ε}
- 如果B → ε,则将FIRST(B)中的ε加入到FOLLOW(B)中
- 如果B在某个产生式的末尾,则将FOLLOW(A)中的符号加入到FOLLOW(B)中
3. 对于非终结符C:
- C → DaB,则FIRST(C) = {d, c}
- C → ca,则FIRST(C) = {c, a}
- 如果C在某个产生式的末尾,则将FOLLOW(B)中的符号加入到FOLLOW(C)中
4. 对于非终结符D:
- D → dD,则FIRST(D) = {d, ε}
- 如果D在某个产生式的末尾,则将FOLLOW(C)中的符号加入到FOLLOW(D)中
5. 对于非终结符E:
- E → gAf,则FIRST(E) = {g, c}
- 如果E在某个产生式的末尾,则将FOLLOW(B)中的符号加入到FOLLOW(E)中
综上所述,每个非终结符的FIRST集和FOLLOW集如下:
FIRST集:
FIRST(A) = {g, d}
FIRST(B) = {b, ε}
FIRST(C) = {d, c}
FIRST(D) = {d, ε}
FIRST(E) = {g, c}
FOLLOW集:
FOLLOW(A) = {$}
FOLLOW(B) = {c, g}
FOLLOW(C) = {a, b}
FOLLOW(D) = {a, b, c, g}
FOLLOW(E) = {c, g}
阅读全文