大门|大门-CS-2003 |问题56

考虑下面的语法

null
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’→ 是的,是的→ ε} 还有{S’→ ε} 答复: (D) 说明: 这里将解析表表示为M[X,Y],其中X表示行(非终端),Y表示列(终端)。

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

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

规则1 :如果A–>α是产物,对于第一个(α)中的每个端子“A”,将A–>α添加到M[A,A]

规则2 :如果‘ε’位于第一位(α),则为后面(A)中的每个‘b’将A–>α添加到M[A,b]。

由于条目已被要求对应于非终端S’,因此我们只需要考虑它的产品来得到答案。

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

同样地,

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

所以答案是D选项。

请访问以下链接,了解如何查找第一组和第二组。

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

© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享