- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第三章 词法分 词法分析是编译的第一个阶段,它的主要任
令{S},{A},{B},{Z},{A,B},{A,Z},{A,B,Z},{B,Z}分别为S0, S1, S2, S3, S4, S5, S6, S7。则相应的DFA M‘为: M’=({S0, S1, S2, S3, S4, S5, S6, S7},{a,b},f’,S0,{S3, S5, S6, S7}) 其中f’见图: 例:将如图表示的NFA确定化 a b {X,5,1} {5,3,1} {5,4,1} {5,3,1} {5,3,1,2,6,Y} {5,4,1} {5,4,1} {5,3,1} {5,4,1,2,6,Y } {5,3,1,2,6,Y} {5,3,1,2,6,Y} {5,4,1,6,Y } {5,4,1,2,6,Y } {5,3,1,6,Y} {5,4,1,2,6,Y } {5,4,1,6,Y } {5,3,1,6,Y} {5,4,1,2,6,Y } {5,3,1,6,Y} {5,3,1,2,6,Y} {5,4,1,6,Y } 令状态{X,5,1}、{5,3,1}、{5,4,1}、{5,3,1,2,6,Y}、{5,4,1,2,6,Y }、{5,4,1,6,Y }、{5,3,1,6,Y}分别为0,1,2,3,4,5,6则 4. 确定自动机的化简 为提高语言的识别效率,应该尽量压缩DFA的状态,这里需要研究DFA状态所谓最小化问题,也就是能不能找到一个状态数最少的DFA,可以证明在不考虑同构的前提下,最小化的DFA是唯一的。所谓确定自动机M的最小化实际上是找一个状态数最少的M’使L(M)=L(M’)。 定义 3.9 如果DFA M从状态S出发,输入是ω,它可以停在某个终止状态,但是从T 出发同样的输入,它停在一个非终止状态,或者相反,称为串ω可区分(可区别)状态S和T。 例:ε可区分任何终止和非终止状态。 最小化DFA状态数的算法就是把DFA的状态数分成一些不相交的子集,每一子集的状态都是不可区别的。每个子集合并成一个状态。终止状态和非终止状态是可区分的,因此最初应划分成两个组,终止状态组和非终止状态组。 极小化DFA的状态数算法: (1) 构造状态集合的初始划分Π,分成两组,终止状态F和非终止状态K-F。 (2)应用下面的过程对Π构造新的划分Πnew Πnew=Π; do {Π=Πnew; for(Π中的每个组G ) {把G划分成小组,G的两个状态S和T在同一小组中,当且 仅当对所有的输入符号a,S和T的a的转换是到Π的同一组中 } while(Π!=Πnew); (3) 在最终划分中的每个状态组中选一个状态代表它。 (4) 如果等价的DFA中有对任何字符a 都转换到 本身,而不能从开始状态到的那些状态,以及不可能从开始状态到达的那些状态删除。从任何其它到上述状态的转换都成为无定义。 例:对图表示的DFA最小化 {0,1,2,3} {4} 对于状态3输入b时不在同一组,故 {0,1,2} {3} {4} 对于状态1输入b时不在同一组,故 {0,2} {1} {3} {4} 而{0,2}对于任何输入都 在同一组中,故不能再分了。 a b 0 1 2 1 1 3 2 1 2 3 1 4 4 1 2 解:为了方便起见将图代表的DFA列一张表(如下) 状态数最小的状态图如下: 5. 正规式和有限自动机的转换 可以证明对于正规式都存在与之等价的有穷自动机,反之亦成立。 从正规式到有限自动机 利用转换系统构造NFA,把具有唯一开始状态和唯一终止状态允许标记有ε弧的NFA称为转换系统 转换系统的构造: Φ,ε,a的转换系统分别是: 转换规则如下: 例:设计与下列FA的正则表达式。 (1) a*b* (2) (a|b)*ab(a|b)* 解:(1) a b SABZ ABZ BZ ABZ ABZ BZ BZ BZ 令SABZ , ABZ , BZ 分别为S0 、S1 和S2,则相应的DFA为: DFA A0=({S0 , S1 , S2},{a,b},δ, S0,{S0 , S1 , S2}) 其中:δ(S0 ,a)= S1 δ(S0 ,b)= S2 δ(S1 ,a)= S1 δ(S1 ,b)= S2 δ(S2 ,b)= S2 即: (2)解 a b SA AB A AB AB ACZ A AB A ACZ ABCZ ACZ ABCZ ABCZ ACZ (2) (a|b)*ab(a|b)* 令 SA,AB,A,ACZ,ABCZ分别为 S0 , S1 , S2, S3 , S4
文档评论(0)