编译原理第4章答案

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

第四章 词法分析

1.构造下列正规式相应的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 为

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

(2)1(1010* | 1(010)* 1)* 0对应的NFA 为

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

(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}, M(y,1)=φ,M(z,1)={y},构造相应的DFA。

解:根据题意有NFA图如下

0,1下表由子集法将NFA转换为DFA:

下面将该DFA最小化:

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

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

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

(3)区分P1:由于A,E输入0到终态,而D输入0不到终态,所以D与A,E可以区分,有P11={A,E},P12={D}。

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

(5)综上所述,DFA可以区分为P={{A},{B},{D},{E},

{C,F}}。所以最小化的DFA如下:

3.将图确定化:

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

1

4.把图的(a)和(b)分别确定化和最小化:

(a) (b)

解: (a):

可得图(a1),由于F(A,b)=F(B,b)=C,并且F(A,a)=F(B,a)=B,所以A,B 等价,可将DFA 最小化,即:删除B ,将

原来引向B 的引线引向与其等价的状态A ,有图(a2)。(DFA 的最小化,也可看作将上表中的B 全部替换为A ,然后删除B 所在的行。)

(a1)确定化的DFA (a2)最小化的DFA

b ):该图已经是DFA 。下面将该DFA 最小化:

(6) 首先将它的状态集分成两个子集:P 1={0},P 2={1,2,3,4,5}

(7) 区分P 2:由于F(4,a)=0属于终态集,而其他状态输入a 后都是非终态集,所以区分P 2如下:

P 21={4},P 22={1,2,3,5}。

(8) 区分P 22:由于F(1,b)=F(5,b)=4属于P 21,而

F(2,b)与F(3,b)不等于4,即不属于P 21,所以区分P 22如下:

P 221={1,5},P 222={2,3}

(9)

区分P 221:由于F(1,b)=F(5,b)=4,即F(1,a)=1,F(5,a)=5,所以1,5等价。

0,1

a

a

a

(10) 区分P 222:由于F(2,a)=1属于P 221,而F(3,a)=3属于P 222,所以2,3可区分。P 222区分为P 2221{2},P 2222{3}。 (11) 结论:该DFA 的状态集可分为:P={ {0},{1,5},{2},{3},{4} },其中1,5等价。删去状态5,将原来引向5的引

线引向与其等价的状态1,有图(b1)。

(b1)最小化的DFA

5.构造一个DFA ,它接收Σ={0,1}上所有满足如下条件的字符串:每个1都有0直接跟在右边。然后再构造该语言的正则文法。

解:根据题意,DFA 所对应的正规式应为:(0|(10))*。所以,接收该串的NFA 如下:

显然,A ,B 等价,所以将上述DFA 最小化后有:

对应的正规文法为: G[A]:

A1C|0A |ε C0A

6.设无符号数的正规式为θ:

θ=dd *|dd *.dd *|.dd *|dd *e(s|ε)dd *|e(s|ε)dd *|.dd *e(s|ε)dd *|dd *.dd *e(s|ε)dd *

化简θ,画出θ的DFA ,其中d={0,1,2,…9},s={+,-}

解:把原正规式的每2,3项,4,5项,6,7项分别合并后化简有:

θ=dd *|d *.dd *|d *e(s|

ε)dd *|d *.dd *e(s|

ε)dd *

=dd *|d *.dd *|(d *|d *.dd *)e(s|

ε)dd *

=(ε|d *.|(d

*|d *.dd *)e(s|ε))dd *

=(ε|d *.|d *(ε|.dd *)e(s|ε))dd *

下面构造化简后的θ对应的NFA :

7.给文法G[S]: SaA|bQ AaA|bB|b BbD|aQ QaQ|bD|b DbB|aA

EaB|bF

FbD|aE|b

构造相应的最小的DFA 。

解:由于从S 出发任何输入串都不能到达状态E 和F ,所以,状态E ,F 为多余的状态,不予考虑。这样,可以写出文法G[S]对应的NFA :

a

相关文档
最新文档