编译原理课后答案16页.docx

上传人:b****3 文档编号:793862 上传时间:2022-10-13 格式:DOCX 页数:19 大小:1.12MB
下载 相关 举报
编译原理课后答案16页.docx_第1页
第1页 / 共19页
编译原理课后答案16页.docx_第2页
第2页 / 共19页
编译原理课后答案16页.docx_第3页
第3页 / 共19页
编译原理课后答案16页.docx_第4页
第4页 / 共19页
编译原理课后答案16页.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

编译原理课后答案16页.docx

《编译原理课后答案16页.docx》由会员分享,可在线阅读,更多相关《编译原理课后答案16页.docx(19页珍藏版)》请在冰豆网上搜索。

编译原理课后答案16页.docx

编译原理课后答案16页

习题1

6.答:

省略表示法:

{1.3,1.33,1.333…};描述表示法:

{1.3i|i=1,2,3…}

7.答:

x+={0,12,123,1234…};x*={,0,12,123…}

8.答:

长度为0的符号串个数:

0个。

长度为1的符号串个数:

26个。

长度为2的符号串个数:

26*36=936个。

长度为3的符号串个数:

26*36*36=33696个。

长度不大于3的符号串个数:

26+936+33696=34658个。

有代表性的符号串:

a,a0,aa,a00,a0a,aa0

习题2

3.

(1)

(2)

短语:

E+T是相对于E的短语;F是相对于T的短语;i是相对于F的短语;T*F是相对于T的短语;E+T+T是相对于E的短语;E+T+F是相对于E的短语;E+T+i是相对于E的短语;E+T*F是相对于E的短语;E+T*F*F是相对于E的短语;E+T*F*i是相对于E的短语;E+T*F*i+i是相对于E的短语.

简单短语:

E+T是相对于E的简单短语;F是相对于T的简单短语;i是相对于F的简单短语;T*F是相对于T的简单短语;

5.解:

L(G[A])={bn-1a|n=1,2…}

L(G[W])={bn-1a2|n=1,2…}

证明:

当n=1时,,显然结论成立;

假设n=k时;

则当n=k+1时,

综上,结论对一切n>=1成立,即

在上面的规纳证明中,利用文法的一切规则且仅用了文法中的规则,

因此,该文法产生的语言L(G[W])={bn-1a2|n=1,2…}

6.

(1)Z:

:

=aAd|aZd

A:

:

=bc|bAc

(2)Z:

:

=AB

A:

:

=ab|aAb

B:

:

=b|Bb

7.解:

题中要求文法是:

Z:

:

=1|3|5|7|9|Z1|Z3|Z5|Z7|Z9|A1|A3|A5|A7|A9

A:

:

=2|4|6|8|A0|A2|A4|A6|A8|Z0|Z2|Z4|Z6|Z8

习题5

2.最左推导:

最右:

最右推导是规范分析,最右推导每一步的句柄是:

①(;②T;③(;④S;⑤b;⑥S;⑦a

4.

(2)证明:

从上面两个语法树中可得出对于文法G[S]:

S:

:

=iScS|iS|i的句子iiici有两个不同的语法树,故得出该文法是二义性的.

5.

(1)方法一:

自顶向下

最右推导:

方法二:

自底向上

最左归约:

习题6

3.解:

DFAD=({A,B,C,D,E,F},{0,1},M,A,{E,F})

M:

M(A,0)=B

M(B,0)=DM(B,1)=C

M(C,0)=AM(C,1)=F

M(D,0)=AM(D,1)=C

M(E,0)=DM(E,1)=C

M(F,0)=EM(F,1)=A

对于字符串0011011运行DFAD有:

M(A,0011011)

=M(M(A,0),011011)

=M(M(B,0),11011)

=M(M(D,1),1011)

=M(M(C,1),011)

=M(M(F,0),11)

=M(M(E,1),1)

=M(C,1)

=F

∴DFAD能接受字符串0011011

8.解:

将状态转换图列表,即:

由左图可知,该状态转换图直接对应的是确定有穷状态自动机DFA

DFAD=({0,1,2,3,4,5},{a,b},M,0,{0,1})

M:

M(0,a)=1M(0,b)=2

M(1,a)=1M(1,b)=4

M(2,a)=1M(2,b)=3

M(3,a)=3M(3,b)=2

M(4,a)=0M(4,b)=5

M(5,a)=5M(5,b)=1

化简:

1.分化

①{0,1}{2,3,4,5}

②{0,1}{2,4}{3,5}

2.合并

3.删除

没有无用状态和死状态,所以化简到此结束

状态最小化图:

9.

(1)证明:

e1|e2=e2|e1

|e1|e2|=|e1|∪|e2|=|e2|∪|e1|=|e2|e1|

∴e1|e2=e2|e1

(2)证明:

(e1|e2)e3=e1e3|e2e3

|(e1|e2)e3|=|(e1|e2)||e3|=|e1|e2||e3|=(|e1|∪|e2|)|e3|

=|e1||e3|∪|e2||e3|=|e1e3|∪|e2e3|=|e1e3|e2e3|

∴(e1|e2)e3=e1e3|e2e3

10.证明:

e=b|ae当且仅当e={a}b

证:

充分性:

正则表达式e=b|ae的值是这样一个正则集,以无数个小a开头,后跟

一个小b。

即:

e={a}b。

必要性:

|{a}b|=|{a}||b|=|a|*|b|

∴e=b|ae当且仅当e={a}b

11.

(1)从e构造转换系统:

去ε弧及无用状态和死状态:

由状态转换图构造NFA:

NFAA=({S,A,B,C,D,F,Z},{0,1},M,{S},{Z})

M:

由NFA产生DFA:

分化:

①{[S],[C],[A],[AD],[AF],[ABF]}{[AFZ]}

②{[S]}{[C]}{[A],[AF],[ABF]}{[AD]}{[AFZ]}

最小化:

(2)由e构造转换系统:

去ε弧及无用状态和死状态:

因为现在只有一个状态,所以无需再最小化,此时就是最小化.

13.解:

建立方程组如下:

W=Ua+Vb①

U=Va+c②

V=Ub+c③

把③代入②得,U=(Ub+c)a+c=Uba+ca+c

把它改写成U=(ca+c){ba},因此U=(ca|c){ba}④

把②代入③得,V=(Va+c)b+c=Vab+cb+c

把它改写成V=(cb+c){ab},因此V=(cb|c){ab}⑤

把④⑤代入①得,W=Ua+Vb=(ca|c){ba}a+(cb|c){ab}b

因此W=(ca|c){ba}a|(cb|c){ab}b

习题七

6.试消去文法G[S]:

4.试为文法G[P]:

P∷=beginSendS∷=A|C

A∷=V:

=EC∷=ifEthenS

E∷=VE∷=E+VV∷=i

采用某种程序设计语言构造递归下降识别程序。

解:

由于文法存在左递归,进行文法等价变换,得到等价文法G′[P]:

P∷=beginSendS∷=A|C

A∷=V:

=EC∷=ifEthenS

E∷=VE′E′∷=+VE′|εV∷=i

流程图如下:

8.设文法G[E]:

E∷=T+E|T-E|T

T∷=F*T|F/T|F

F∷=(E)|i

试问能否直接应用预测分析技术来实现其识别程序?

简略说明原因。

请设法为该文法构造预测分析表,给出构造过程,并识别输入符号串i*i-(i+i)/i是否该文法的句子。

解:

不能直接应用预测分析技术来实现其识别程序。

原因:

该文法存在回溯性

消回溯:

E∷=TE′

E′∷=+E|-E|ε

T∷=FT′

T′∷=*T|/T|ε

F∷=(E)|i

first(E)={(,i}

first(E′)={+,-,ε}

first(T)={(,i}

first(T′)={*,/,ε}

first(F)={(,i}

follow(E)={#,)}

follow(E′)={#,)}

follow(T)={#,),+,-}

follow(T′)={#,),+,-}

follow(F)={*,/,#,),+,-}

识别输入符号串i*i-(i+i)/i,则识别过程

步骤栈输入输出

0#Ei*i-(i+i)/i#E∷=TE′

1#E′Ti*i-(i+i)/i#T∷=FT′

2#E′T′Fi*i-(i+i)/i#

3#E′T′i*i-(i+i)/i#

4#E′T′*i-(i+i)/i#T′∷=*T

5#E′T**i-(i+i)/i#

6#E′Ti-(i+i)/i#T∷=FT′

7#E′T′Fi-(i+i)/i#

8#E′T′i-(i+i)/i#

9#E′T′-(i+i)/i#T′∷=ε

10#E′-(i+i)/i#E′∷=-E

11#E--(i+i)/i#

12#E(i+i)/i#E∷=TE′

13#E′T(i+i)/i#T∷=FT′

14#E′T′F(i+i)/i#F∷=(E)

15#E′T′)E((i+i)/i#

16#E′T′)Ei+i)/i#E∷=TE′

17#E′T′)E′Ti+i)/i#T∷=FT′

18#E′T′)E′T′Fi+i)/i#

19#E′T′)E′T′i+i)/i#

20#E′T′)E′T′+i)/i#T′∷=ε

21#E′T′)E′+i)/i#E′∷=+E

22#E′T′)E++i)/i#

23#E′T′)Ei)/i#E∷=TE′

24#E′T′)E′Ti)/i#T∷=FT′

25#E′T′)E′T′Fi)/i#

26#E′T′)E′T′i)/i#

27#E′T′)E′T′)/i#T′∷=ε

28#E′T′)E′)/i#E′∷=ε

29#E′T′))/i#

30#E′T′/i#T′∷=/T

31#E′T//i#

32#E′Ti#T∷=FT′

33#E′T′Fi#

34#E′T′i#

35#E′T′#T′∷=ε

36#E′#E′∷=ε

37##

因此识别出i*i-(i+i)/i是文法G[E]的句子.

习题8

2.为文法G[S]:

S∷=a|b|(R)R∷=TT∷=S,T|S

构造简单优先矩阵。

解:

S1=SS2=aS3=bS4=(S5=RS6=)S7=TS8=,

3.利用图5-4中的简单优先矩阵,识别文法G5.2的句子b(aa)b.

习题九

3.试为下列优先矩阵构造优先函数

(1)逐次加一法构造优先函数:

步骤三、关于优先关系±修改f与g的值成,而此时构造过程已收敛,即优先函数值与优先关系完全一致,则该优先矩阵所对应的优先

(2)Bell有向图法(非形式化)

步骤三、检查可得f与g的值与原有的优先矩阵一致,所以上表函数即为所求优先函数

Bell有向图法(形式化)

习题十

习题十一

2.试说明文法G[S]:

S∷=aBB∷=Bb|b不是LR[0]文法。

解:

构造文法G[S]的增广文法G[Z]:

Z∷=S#S∷=aBB∷=Bb|bCFSM:

因为文法G[Z](等价于G[S])的CFSM中有不适定状态S4,所以此文法不是LR(0)文法。

4、试利用表5-10中的分析表识别符号串(i+i)*i+i是否是文法G5.5的句子。

给出识别过程。

注意,请指出步每步动作。

解:

识别过程:

5、设文法G[S]:

S∷=a|b|(T)T∷=T,S|S试构造closure({[0,0;#]})。

解:

closure({[0,0;#]})=closure({[Z→.S,#]})

={[Z→.S,#],[S→.a,#],[S→.b,#],[S→.(T),#]}

6、试写出关于文法G[S]:

S∷=a|b|(T)T∷=T,S|S的规则T∷=T,S的一切LR(0)项,且构造CLOSURE({S→(.T)}),指明它有哪些后继项集,各是什么?

其中哪些对应于归约状态?

哪些对应于读状态?

哪些对应于不适定状态?

解:

T∷=T,S的一切LR(0)项:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1