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

📅  最后修改于: 2021-09-27 06:00:25             🧑  作者: Mango

考虑以下语法

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

哪个是跟随(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 提供。这个问题的测验