📜  门| GATE-CS-2017(Set 1)|问题23

📅  最后修改于: 2021-07-02 14:42:40             🧑  作者: Mango

考虑以下语法

p --> xQRS
Q --> yz|z
R --> w|∈
S -> y

哪个是FOLLOW(Q)?

(A) {R}
(B) {w}
(C) {w,y}
(D) {w,∉}答案: (C)
解释: g-set1_a23

替代解决方案

要为所有非终端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提供。这个问题的测验