编译原理 第7章习题解答

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第七章习题解答
7.1 给定文法:
S→(A)
A→ABB
A→B
B→b
B→c
①构造它的基本LR(0)项目集;
②构造它的LR(0)项目集规范族;
③构造识别该文法活前缀的DFA;
④该文法是SLR文法吗?若是,构造它的SLR分析表。

7.2 给定文法:
E→EE+
E→EE*
E→a
①构造它的LR(0)项目集规范族;
②它是SLR(1)文法吗?若是,构造它的SLR(1)分析表;
③它是LR(1)文法吗?若是,构造它的LR(1)分析表;
④它是LALR(1)文法吗?若是,构造它的LALR分析表。

7.3 给出一个非LR(0)文法。

7.4 给出一个SLR(1)文法,但它不是LR(0)文法,构造它的SLR分析表。

7.5 给出一个LR(1)文法,但它不是LALR(1)文法,构造它的规范LR(1)分析表。

7.6 给定二义性文法:
① E→E+E
② E→E*E
③ E→(E)
④ E→id
用所述的无二义性规则和(或)另加一些无二义性规则,例如,给算符*、+施加某种结合规则。

①构造它的LR(0)项目集规范族及识别活前缀的DFA;
②构造它的LR分析表。

习题参考答案
7.1 解:文法的基本LR(0)项目集为
S→.(A) S→(.A) S→(A.) S→(A).
A→.ABB A→A.BB A→AB.B A→ABB.
A→.B A→B. B→.b B→b.
B→.c B→c.
构造该文法的识别活前缀的DFSA如下图所示:
I
文法的识别活前缀的DFSA
该文法的LR(0)项目集规范族={I0,I1,I2,I3,I4,I5,I6,I7,I8}
因为在构造出来的识别活前缀的DFA中,每一个状态对应的项目集都不含有移进-归约、归约-归约冲突,所以该文法是LR(0)文法,当然也是SLR文法。

因为 FOLLOW(S)={#}
FOLLOW(A)=FIRST{)}∪FIRST(BB)={),b,c}
FOLLOW(B)=FIRST(B)∪FOLLOW(A)={b,c,)}
其对应的SLR(1)分析表如下表所示。

文法G[S]的SLR(1)分析表
7.2 解:首先构造增广文法如下:
S→E 0
E→EE+ 1
E→EE* 2
E→a 3
(1) 构造它的LR(0)项目集规范族如下图所示。

该文法的LR(0)项目集规范族={I0,I1,I2,I3,I4,I5}
(2) 因为在识别活前缀的DFSA的每一个状态中,都不存在移进-归约冲突和归约-归约冲突,所以文法是LR(0)文法,当然也是SLR(1)文法。

因为 FOLLOW(E)={#,+,*,a}
所以该文法对应的SLR(1)分析表如下表所示。

文法的LR(0)项目集规范族
文法的SLR(1)分析表
(3) 该文法是SLR(1)文法,当然也是LR(1)文法。

它的以LR(1)项目集为状态的识别活前缀的DFSA如下图所示。

相应的LR(1)分析表如表所示。

文法的以LR(1)项目集为状态的识别活前缀的DFSA
文法的LR(1)分析表
(4) 由于文法的以LR(1)项目集为状态的识别活前缀的DFSA中,状态I2和I4、I3和I7、I5和I8、I6和I9是同心项目集,将它们合并后不会产生冲突。

因而可构造文法的LALR(1)分析表如下表所示。

文法的LALR(1)分析表
7.3 解:构造二义性文法G:
S→aAbScS
S→aAbS
G不是LR(0)文法。

7.4 解:构造下面文法G:
S→bASB|bA
S→dSa|b
B→cAa|c
然后构造其SLR分析表。

(略)
7.5 解:构造下面的文法G:
S→aAa|aBb|bAb|bBa
A→x
B→x
然后构造其LR(1)分析表。

(略)
7.6 解:首先构造增广文法如下:
S→E 0
E→E+E 1
E→E*E 2
E→(E) 3
E→id 4
(1)构造它的识别活前缀的DFSA如下图所示。

I 1
I 0
I 3
该文法的LR(0)项目集规范族={I 0,I 1,I 2,I 3,I 4,I 5,I 6,I 7,I 8,I 9} (2) 构造它的LR 分析表如下表所示。

文法有冲突的LR 分析表
由于识别文法活前缀的DFSA 中,状态I 7和I 8都存在“移进-归约”冲突,同时, FOLLOW(E)={#,),+,*}
即使构造SLR 分析表也无法避免冲突。

为此规定*的优先级高于+,且它们均服从左结合,得到无冲突的LR 分析表如下表所示。

文法无冲突的LR 分析表。

相关文档
最新文档