📜  门| GATE-CS-2006 |第 58 题

📅  最后修改于: 2021-09-26 03:29:10             🧑  作者: Mango

考虑以下语法:

S → FR
R → S | ε
F → id

在语法的预测解析器表 M 中,条目分别是 M[S, id] 和 M[R, $]。
(A) {S → FR} 和 {R → ε }
(B) {S → FR} 和 { }
(C) {S → FR} 和 {R → *S}
(D) {F → id} 和 {R → ε}答案:(一)
说明:这里将解析表表示为 M[ X , Y ],其中 X 表示行(非终结符),Y 表示列(终结符)。

以下是填充解析表的规则。

对于语法中每个不同的产生式规则 A->α,我们需要应用给定的规则:

规则 1 :如果 A –> α 是产生式,则对于 FIRST(α) 中的每个终结点 ‘a’,将 A–>α 添加到 M[ A , a ]

规则 2 :如果 ‘ε’ 在 FIRST(α) 中,则为 FOLLOW(A) 中的每个 ‘b’ 添加 A –> α 到 M [ A , b ]。

由于条目已被要求对应于非终端 S 和 R,因此我们只需要考虑它们的产生式即可得到答案。

对于 S → FR ,根据规则 1,这个产生式规则应该放在条目 M[ S, FIRST(FR) ] 处,并且根据给定的文法, FIRST(FR) ={id},因此 S->FR 是放在解析表的条目M[S , id] 处。

相似地,

对于 R → S,这个产生式规则应该放在条目 M[ R, FIRST(S) ] 处,因为 FIRST(S) = FIRST(F) = {id} 因此,R->S 放在条目 M[ R,id]

对于 R->ε ,由于 FIRST(ε) = {ε},因此应该应用规则 2,因此,这个产生式规则应该放在解析表中的条目 M[R,FOLLOW(R)] 和 FOLLOW( R) = FOLLOW(S) = {$},因此 R->ε 被放置在条目M[ R, $ ] 处。

所以答案是选项A。

访问以下链接以了解如何查找 First 和 Follow 集。

https://www.geeksforgeeks.org/first-set-in-syntax-analysis/
https://www.geeksforgeeks.org/follow-set-in-syntax-analysis/
这个问题的测验