编译原理三四章答案清华版.docx

上传人:b****3 文档编号:26656385 上传时间:2023-06-21 格式:DOCX 页数:19 大小:167.88KB
下载 相关 举报
编译原理三四章答案清华版.docx_第1页
第1页 / 共19页
编译原理三四章答案清华版.docx_第2页
第2页 / 共19页
编译原理三四章答案清华版.docx_第3页
第3页 / 共19页
编译原理三四章答案清华版.docx_第4页
第4页 / 共19页
编译原理三四章答案清华版.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

编译原理三四章答案清华版.docx

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

编译原理三四章答案清华版.docx

编译原理三四章答案清华版

第三章习题解答

6.每个表达式的推导及语法树分别如下:

(1)<表达式>

=><项>

=><因子>

=>i

(2)<表达式>

=><项>

=><因子>

=>(<表达式>)

=>(<项>)

=>(<因子>)

=>(i)

(3)<表达式>

=><项>

=><项>*<因子>

=><因子>*<因子>

=>i*<因子>

=>i*i

(4)<表达式>

=><表达式>+<项>

=><项>+<项>

=><项>*<因子>+<项>

=><因子>*<因子>+<项>

=>i*<因子>+<项>

=>i*i+<项>

=>i*i+<因子>

=>i*i+i

(5)<表达式>

=><表达式>+<项>

=><项>+<项>

=><因子>+<项>

=>i+<项>

=>i+<因子>

=>i+<表达式>

=>i+(<表达式>+<项>)

=>i+(<项>+<项>)

=>i+(<因子>+<项>)

=>i+(i+<项>)

=>i+(i+<因子>)

=>i+(i+i)

(6)<表达式>

=><表达式>+<项>

=><项>+<项>

=><因子>+<项>

=>i+<项>

=>i+<项>*<因子>

=>i+<因子>*<因子>

=>i+i*<因子>

=>i+i*i

11.根据文法G给定的规则,从文法的开始符E出发可推导出E+T*F,推导过程如下:

E=>E+T=>E+T*F,所以E+T*F是该文法的一个句型。

由右图的语法树也可以看出,E+T*F是该文法的一个句型。

这个句型的所有短语为:

E+T*F,T*F

直接短语为:

T*F

句柄为:

T*F

13.

(1)最左推导:

S=>ABS

=>a1BS

=>a1SBBS

=>a1BBS

=>a1b1BS

=>a1b1b2S

=>a1b1b2Aa3

=>a1b1b2a2a3

最右推导:

S=>ABS

=>ABAa3

=>ABa2a3

=>ASBBa2a3

=>ASBb2a2a3

=>ASb1b2a2a3

=>Ab1b2a2a3

=>a1b1b2a2a3

(2)该文法产生式集合P可能有如下规则:

S→ABS|Aa|ε

A→a

B→SBB|b

(3)该句子的所有短语为:

a1b1b2a2a3,a1,b1b2,ε,b1,b2,a2a3,a2

直接短语为:

a1,ε,b1,b2,a2

句柄为:

a1

第四章习题答案

1.

(1)对应NFA如图:

对其进行确定化操作:

0

1

-{S}

{A}

{A}

{A}

{A,B}

{A,B}

{A,C}

{A,B}

{A,C}

{A}

{A,B,Z}

+{A,B,Z}

{A,C}

{A,B}

T0=ε-closure({S})={S}

计算ε-closure(move({S},0))=Ф

计算ε-closure(move({S},1))={A},标记为T1

计算ε-closure(move({A},0))={A}=T1

计算ε-closure(move({A},1))={A,B},标记为T2

计算ε-closure(move({A,B},0))={A,C},标记为T3

计算ε-closure(move({A,B},1))={A,B}=T2

计算ε-closure(move({A,C},0))={A}=T1

计算ε-closure(move({A,C},1))={A,B,Z},标记为T4

计算ε-closure(move({A,B,Z},0))={A,C}=T3

计算ε-closure(move({A,B,Z},1))={A,B}=T2

得到的DFA存在五种状态:

[T0],[T1],[T2],[T3],[T4]

其中:

[T0]为初态,[T4]为终态,对应的转换矩阵如右上表格所示,令S,A,B,C,D分别表示这五种状态,则其对应的DFA状态转换图及状态转换矩阵分别为:

0

1

-S

A

A

A

B

B

C

B

C

A

D

+D

C

B

(3)对应NFA如图:

对其进行确定化操作:

T0=ε-closure({S})={S}

计算ε-closure(move({S},a))={A,B,D},标记为T1

计算ε-closure(move({S},b))=Ф

计算ε-closure(move({A,B,D},a))={A,B,C,D},标记为

计算ε-closure(move({A,B,D},b))={A,B,D,Z},标记为T3

计算ε-closure(move({A,B,C,D},a))={A,B,C,D}=T2

计算ε-closure(move({A,B,C,D},b))={A,B,C,D,Z},标记为T4

计算ε-closure(move({A,B,D,Z},a))={A,B,C,D}=T2

计算ε-closure(move({A,B,D,Z},b))={A,B,D,Z}=T3

计算ε-closure(move({A,B,C,D,Z},a))={A,B,C,D}=T2

计算ε-closure(move({A,B,C,D,Z},b))={A,B,C,D,Z}=T4

得到的DFA存在五种状态:

[T0],[T1],[T2],[T3],[T4]

其中:

[T0]为初态,[T3],[T4]为终态,对应的转换矩阵如左下表格所示,令S,A,B,C,D分别表示这五种状态,则其对应的DFA状态转换图及状态转换矩阵分别为:

a

b

-{S}

{A,B,D}

{A,B,D}

{A,B,C,D}

{A,B,D,Z}

{A,B,C,D}

{A,B,C,D}

{A,B,C,D,Z}

+{A,B,D,Z}

{A,B,C,D}

{A,B,D,Z}

+{A,B,C,D,Z}

{A,B,C,D}

{A,B,C,D,Z}

a

b

-S

A

A

B

C

B

B

D

+C

B

C

+D

B

D

2.根据题意,可以得其NFA状态转换图如下图所示:

对其进行确定化操作:

0

1

-{x}

{z}

{x}

+{z}

{x,z}

{y}

+{x,z}

{x,z}

{x,y}

{y}

{x,y}

{x,y}

{x,y,z}

{x}

+{x,y,z}

{x,y,z}

{x,y}

T0=ε-closure({x})={x}

计算ε-closure(move({x},0))={z},标记为T1

计算ε-closure(move({x},1))={x}=T0

计算ε-closure(move({z},0))={x,z},标记为T2

计算ε-closure(move({z},1))={y},标记为T3

计算ε-closure(move({x,z},0))={x,z}=T2

计算ε-closure(move({x,z},1))={x,y},标记为T4

计算ε-closure(move({y},0))={x,y}=T4

计算ε-closure(move({y},1))=Ф

计算ε-closure(move({x,y},0))={x,y,z},标记为T5

计算ε-closure(move({x,y},1))={x}=T0

计算ε-closure(move({x,y,z},0))={x,y,z}=T5

计算ε-closure(move({x,y,z},1))={x,y}=T4

得到的DFA存在六种状态:

[T0],[T1],[T2],[T3],[T4],[T5]

其中:

[T0]为初态,[T1],[T2],[T5]为终态,对应的转换矩阵如右上表格所示,令A,B,C,D,E,F分别表示这六种状态,则其对应的DFA状态转换图及状态转换矩阵分别为:

0

1

-A

B

A

+B

C

D

+C

C

E

D

E

E

F

A

+F

F

E

3.状态转换图如图所示:

对其进行确定化操作:

0

1

-{S}

{V,Q}

{Q,U}

{V,Q}

{V,Z}

{Q,U}

{Q,U}

{V}

{Q,U,Z}

+{V,Z}

{Z}

{Z}

{V}

{Z}

+{Q,U,Z}

{V,Z}

{Q,U,Z}

+{Z}

{Z}

{Z}

T0=ε-closure({S})={S}

计算ε-closure(move({S},0))={V,Q},标记为T1

计算ε-closure(move({S},1))={Q,U},标记为T2

计算ε-closure(move({V,Q},0))={V,Z},标记为T3

计算ε-closure(move({V,Q},1))={Q,U}=T2

计算ε-closure(move({Q,U},0))={V},标记为T4

计算ε-closure(move({Q,U},1))={Q,U,Z},标记为T5

计算ε-closure(move({V,Z},0))={Z}=T3

计算ε-closure(move({V,Z},1))={Z}=T3

计算ε-closure(move({V},0))={Z}=T4

计算ε-closure(move({V},1))=Ф

计算ε-closure(move({Q,U,Z},0))={V,Z},标记为T6

计算ε-closure(move({Q,U,Z},1))={Q,U,Z}=T5

计算ε-closure(move({Z},0))={Z}=T6

计算ε-closure(move({Z},1))={Z}=T3

得到的DFA存在七种状态:

[T0],[T1],[T2],[T3],[T4],[T5],[T5]

0

1

-A

B

C

B

D

C

C

E

F

+D

G

G

E

G

+F

D

F

+G

G

G

其中:

[T0]为初态,[T3],[T5],[T6]为终态,对应的转换矩阵如右上表格所示,令A,B,C,D,E,F,G分别表示这七种状态,则其对应的DFA状态转换图及状态转换矩阵分别为:

4.(a)

对其进行确定化操作:

T0=ε-closure({0})={0}

a

b

-+{0}

{0,1}

{1}

+{0,1}

{0,1}

{1}

{1}

{0}

计算ε-closure(move({0},a))={0,1},标记为T1

计算ε-closure(move({0},b))={1},标记为T2

计算ε-closure(move({0,1},a))={0,1}=T1

计算ε-closure(move({0,1},b))={1}=T2

计算ε-closure(move({1},a))={0}=T0

计算ε-closure(move({1},b))=Ф

得到的DFA存在三种状态:

[T0],[T1],[T2]

其中,[T0]为初态,[T0],[T1]为终态,对应的转换矩阵如右上表格所示,令A,B,C分别表示这三种状态,则其对应的DFA状态转换图及状态转换矩阵如下:

a

b

-+A

B

C

+B

B

C

C

A

对其进行最小化操作:

该DFA无多余状态,进行初始划分,得终态组{A,B},非终态组{C}

对终态组{A,B}进行审查,输入符号a后,状态A,B均转换成状态B;输入符号b后,状态A,B均转换成状态C,由此可知,状态A,B等价,不能再分。

令A代表{A,B},则得其最小化的DFA为:

a

b

-+A

A

C

C

A

(b)

由此状态转换图可知,该NFA已经是DFA,直接对其进行最小化操作。

该DFA无多余状态,进行初始划分,得终态组{0},非终态组{1,2,3,4,5}

对非终态组{1,2,3,4,5}进行审查,输入符号a后,状态4转换为状态0,其余状态转换为{1,2,3,4,5}中的状态,到达了不等价的状态,因此将{1,2,3,4,5}划分为{4},{1,2,3,5}

对状态集合{1,2,3,5}进行审查,输入符号b后,状态1,5转换为状态4,状态2,3转换为状态2,到达了不等价的状态,因此将{1,2,3,5}划分为{1,5},{2,3}

对状态集合{2,3}进行审查,输入符号a后,状态2转换为状态1,状态3转换为状态3,到达了不等价的状态,因此将{2,3}划分为{2},{3}

对状态集合{1,5}进行审查,输入符号a后均到达集合{1,5}中的状态,输入符号b后均到达状态4,因此不能再划分。

最终得到划分:

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

令1代表状态集合{1,5},则得其最小化的DFA为:

a

b

-+0

1

2

1

1

4

2

1

3

3

3

2

4

0

1

7.对应的NFA状态转换图为:

对其进行确定化操作:

T0=ε-closure({S})={S}

a

b

-{S}

{A}

{Q}

{A}

{A}

{B,Z}

{Q}

{Q}

{D,Z}

+{B,Z}

{Q}

{D}

+{D,Z}

{A}

{B}

{D}

{A}

{B}

{B}

{Q}

{D}

计算ε-closure(move({S},a))={A},标记为T1

计算ε-closure(move({S},b))={Q},标记为T2

计算ε-closure(move({A},a))={A}=T1

计算ε-closure(move({A},b))={B,Z},标记为T3

计算ε-closure(move({Q},a))={Q}=T2

计算ε-closure(move({Q},b))={D,Z},标记为T4

计算ε-closure(move({B,Z},a))={Q}=T2

计算ε-closure(move({B,Z},b))={D},标记为T5

计算ε-closure(move({D,Z},a))={A}=T1

计算ε-closure(move({D,Z},b))={B},标记为T6

计算ε-closure(move({D},a))={A}=T1

计算ε-closure(move({D},b))={B}=T6

计算ε-closure(move({B},a))={Q}=T2

计算ε-closure(move({B},b))={D}=T5

得到的DFA存在七种状态:

[T0],[T1],[T2],[T3],[T4],[T5],[T5]

其中,[T0]为初态,[T3],[T4]为终态,对应的转换矩阵如右上表格所示,令A,B,C,D,E,F,G分别表示这七种状态,则其对应的DFA状态转换图及状态转换矩阵如下:

a

b

-A

B

C

B

B

D

C

C

E

+D

C

F

+E

B

G

F

B

G

G

C

F

对其进行最小化操作:

该DFA无多余状态,对其进行初始划分:

得终态组{D,E},非终态组{A,B,C,F,G}

对非终态组{A,B,C,F,G}进行审查,输入符号a后,状态B,C分别转换为状态D,E,其余状态转换为{A,B,C,F,G}中的状态,到达了不等价的状态,因此将{A,B,C,F,G}划分为{B,C},{A,F,G}

对状态集合{A,F,G}进行审查,输入符号b后,状态A转换为状态C,而状态F,G转换为状态集合{A,F,G}中的状态,到达了不等价的状态,因此将{A,F,G}划分为{A},{F,G}

考察状态集合{A},{B,C},{D,E},{F,G},均不能再分。

重新命名,以A,B,D,F分别取代上述状态集合,则得其最小化DFA为:

a

b

-A

B

B

B

B

D

+D

B

F

F

B

F

8.A=1S|1=1(S|ε)

B=0S|0=0(S|ε)

S=0A|1B=01(S|ε)|10(S|ε)=(01|10)(S|ε)=(01|10)S|(01|10)=(01|10)*(01|10)=(01|10)+

9.

对其进行最小化操作:

该DFA无多余状态,对其进行初始划分,得非终态组{1,2,3,4,5},终态组{6,7}

对非终态组{1,2,3,4,5}进行审查,输入符号b后,状态3,4分别转换为状态6,7,状态1,2转换为状态2,状态5到达Ф,到达了不等价的状态,因此将{1,2,3,4,5}划分为{1,2},{3,4},{5}

考察状态集合{1,2},{3,4},{5},{6,7},均不能再分。

重新命名,以1,3,5,6分别取代上述状态集合,则得其最小化的DFA为:

a

b

c

d

-1

3

1

3

6

3

5

5

3

+6

6

对应的正规式为:

r=b*a(c|da)*bb*

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

当前位置:首页 > 职业教育 > 其它

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

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