📜  门| GATE-CS-2003 |第 56 题

📅  最后修改于: 2021-09-24 05:07:27             🧑  作者: Mango

考虑下面显示的语法

S → i E t S S' | a
S' → e S | ε
E → b 

在预测解析表中。 M,在这个文法中,条目 M[S’, e] 和 M[S’, $] 分别是
(A) {S’ → e S} 和 {S’ → e}
(B) {S’ → e S} 和 {}
(C) {S’ → ε} 和 {S’ → ε}
(D) {S’ → e S, S’→ ε} 和 {S’ → ε}答案: (D)
说明:这里将解析表表示为 M[ X , Y ],其中 X 表示行(非终结符),Y 表示列(终结符)。

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

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

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

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

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

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

相似地,

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

因此答案是选项 D。

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

http://geeksquiz.com/compiler-design-first-in-syntax-analysis/
http://geeksquiz.com/compiler-design-follow-set-in-syntax-analysis/
这个问题的测验