编译原理第章答案.docx

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

第 四 章 词 法 分 析

构造下列正规式相应的DFA:(1)1(0|1)*101

(2)1(1010*|1(010)*1)*0

(3)a((a|b)*|ab*a)*b

(4)b((ab)*|bb)*ab解:

(1)1(0|1)*101对应的NFA为

0

11

1

1

0

1

0 1 2 3 4

转换为

II

I

I

I

0

=ε-closure(MoveTo(I,0))

1

=ε-closure(MoveTo(I,1))

由子集法将NFADFA:

I

I

I

I

0

=ε-closure(MoveTo(I,0))

1

=ε-closure(MoveTo(I,1))

A[0]

B[1]

B[1]

B[1]

C[1,2]

C[1,2]

D[1,3]

C[1,2]

D[1,3]

B[1]

E[1,4]

E[1,4]

B[1]

B[1]

0 0

1101ABεC

1

1

0

1

A

B

ε

C

D

E

ε 1

1

1

0

1

0

1

1

0

0

1

2

3

4

5

6

10

0,1

1

ε

ε

0

0

1

7 8

9

ε

下表由子集法将NFA 转

换 为DFA:

A[0]

B[1,6]

C[10]

B[1,6]

D[2,5,7]

C[10]

D[2,5,7]

E[3,8]

B[1,6]

E[3,8]

F[1,4,6,9]

G[1,2,5,6,9,10]

F[1,4,6,9]

D[2,5,7]

G[1,2,5,6,9,10]

H[1,3,6,9,10]

I[1,2,5,6,7]

H[1,3,6,9,10]

J[1,6,9,10]

K[2,4,5,7]

I[1,2,5,6,7]

J[1,6,9,10]

K[2,4,5,7]

L[3,8,10]

J[1,6,9,10]

M[2,3,5,8]

I[1,2,5,6,7]

D[2,5,7]

B[1,6]

L[3,8,10]

M[2,3,5,8]

N[3]

F[1,4,6,9]

F[1,4,6,9]

N[3]

O[4]

P[2,5]

O[4]

P[2,5]

N[3]

B[1,6]

1

1

1

L

1

1

1

1

1

0

0

1

0

0

A B D E F I K M

0

0

1

1

0

0

0

C

1

1

G

H

J

0

1

0

1

P O N

0

(3)a((a|b)*|ab*a)*b (略)

(4)b((ab)*|bb)*ab (略)

2.已知NFA=({x,y,z},{0,1},M,{x},{z})其中:M(x,0)={z},M(y,0)={x,y},M(z,0)={x,z},M(x,1)={x},

下表由子集法将

下表由子集法将NF1A转换为DFA:

I

0

0

I =ε-closure(MoveTo(I,0))

0

A[x]

B[z]

C[x,z]D[y]

E[x,y]

F[x,y,z]

0

1

0

z

I

1

A[x]

D[y]

E[x,y]

=ε-closure(MoveTo(I,1))

x

0

B[zy]

C[x,z]

C[x,z]

E[x,y]

F[x,y,z]

F[x,y,z]

A[x]

E[x,y]

1

AB0

A

B

下面将该DFA最小化:

1 0

FE0 0 0

F

E

D 1

0 1

1

首先将它的状态集分成两个子集:P={A,D,E},P={B,C,F}

1 2

(2)区分P:由于F(F,1)=F(C,1)=E,F(F,0)=F并且F(C,0)=C,所以F,C等价。由于F(B,0)=F(C,0)=C,

2

F(B,1)=D,F(C,1)=E,而D,E不等价(见下步),从而B与C,F可以区分。有P

={C,F},P

21

={B}。

22

区分P1:由于A,E输入0到终态,而 D输入0不到终态,所以 D与A,E可以区分,有

P={A,E},P

11

={D}。

12

由于F(A,0)=B,F(E,0)=F,而B,F不等价,所以A,E可以区分。

综上所述,DFA可以区分为P={{A},{B},{D},{E},{C,F}}。所以最小化的DFA如下:

1

1

0

A B

3.将图4.16确定化:

1 0

1

0 0

E F

0

0

0

解:下表由子集法将NFA转换为DFA:

V图4.16

0

I

0,

I

0

0

=ε-closure(MoveTo(I,0))

I =ε-closure(MoveTo(I,1))

1

A[S]

B[Q,V]

C[Q,U]

D[V,Z]E[V]F[Q,U,Z]

G[Z]

S

1B[Q,V]

D[V,Z]E[V]

1G[Z]

G[Z]D[V,Z

文档评论(0)

mph + 关注
官方认证
内容提供者

该用户很懒,什么也没介绍

认证主体上海谭台科技有限公司
IP属地上海
统一社会信用代码/组织机构代码
91310115MA7CY11Y3K

1亿VIP精品文档

相关文档