考虑以下语法
p --> xQRS
Q --> yz|z
R --> w|∈
S -> y
哪个是FOLLOW(Q)?
(A) {R}
(B) {w}
(C) {w,y}
(D) {w,∉}答案: (C)
解释:
替代解决方案
要为所有非终端A计算FOLLOW(A),请应用以下规则,直到不能将任何内容添加到任何FOLLOW集合中:
- 将$放在FOLLOW(S)中,其中S是开始符号,而$是输入的右结束标记。
- 如果产生A→αBβ,那么FIRST(β)中除ε之外的所有内容都将被置于FOLLOW(B)中
- 如果存在生产A→αB或生产A→αBβ,其中FIRST(β)包含∈(即b→∈),则FOLLOW(A)中的所有内容都在FOLLOW(B)中。
因此,Follow(Q)= First(RS)=(w)∪First(S)= {w}∪{y} = {w,y}。
注意,这里的first(S)不是∈。
该解释由Mithlesh Upadhyay提供。这个问题的测验