文法: S -> aAB A -> bB | c B -> d 的follow集怎么推导
时间: 2024-06-07 20:10:51 浏览: 74
首先,我们可以先推导出非终结符 B 的 follow 集:
1. 由于 S 是文法的开始符号,所以 $follow(S) = \{\$\}$。
2. 由于在产生式 A -> bB | c 中,B 在右侧紧跟着终结符 b 或 c,因此 $follow(B)$ 中必然包含 b 和 c 的 follow 集,即 $follow(B) \supseteq \{follow(b), follow(c)\}$。
3. 由于在产生式 A -> bB | c 中,当 b 或 c 后面还有非终结符 B 时,B 可以推导出空串,因此 $follow(B)$ 中还必须包含 A 的 follow 集,即 $follow(B) \supseteq follow(A)$。
4. 由于在产生式 B -> d 中,d 是终结符,且 B 是该产生式中的左侧非终结符,因此 $follow(B)$ 中必然包含 d,即 $follow(B) \supseteq \{d\}$。
综上所述,可以得到 $follow(B) = \{d, follow(A), follow(b), follow(c)\}$。
然后,再根据产生式 A -> bB | c 推导出非终结符 A 的 follow 集:
1. 由于在产生式 A -> bB 中,B 在右侧紧跟着终结符 b,因此 $follow(b) \subseteq follow(B)$,即 $follow(A) \supseteq follow(b)$。
2. 由于在产生式 A -> c 中,c 是终结符,且 A 是该产生式中的左侧非终结符,因此 $follow(A)$ 中必然包含 c,即 $follow(A) \supseteq \{c\}$。
综上所述,可以得到 $follow(A) = \{c, follow(b), follow(A), follow(c)\}$。
阅读全文