com0203-04西安电子科技大学编译原理课件.pptVIP

com0203-04西安电子科技大学编译原理课件.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
com0203-04西安电子科技大学编译原理课件

* 上次课主要内容 记号的识别:有限自动机 NFA的定义:M =(S,∑,move,s0,F) 直观表示:状态转换图与状态转换矩阵 NFA识别记号:从初态到状态路径上的标记 NFA的不确定性:反复试探,大量回溯 DFA:对NFA施加两条限制,消除了不确定因素 模拟DFA的算法:算法2.1 自动机的等价:识别同一个正规集 * 2.4 从正规式到词法分析器 构造词法分析器的一般方法和步骤: 用正规式对模式进行描述; 为每个正规式构造一个NFA,它识别正规式所表示的正规集; 将构造出的NFA转换成等价的DFA,这一过程也被称为确定化; 优化DFA,使其状态数最少,这一过程也被称为最小化; 从优化后的DFA构造词法分析器。 问题: 我们是从DFA构造词法分析器,为何不直接从正规式构造DFA,而要先构造NFA,然后转换为DFA? 原因: 1 机器构造需要规范的算法; 2 正规式→NFA:有规范的一对一的构造算法 3 DFA→分析器:有便于记号的识别的算法 * 2.4.1 从正规式到NFA 算法2.2 Thompson 算法 输入 字母表∑上的正规式r 输出 接受L(r)的NFA N 方法 首先分解r,然后根据下述步骤构造NFA: 1 对ε,构造NFA N(ε)如下。其中,s0为初态,f为终态,此NFA接受{ε}; 2 对∑上的每个字符a,构造NFA N(a)如右上,它接受{a} ; 3 若N(p)和N(q)是正规式p和q的NFA,则 (a) 对正规式p|q,构造NFA N(p|q)如下。其中,s0为初态,f为终态,此NFA接受L(p)∪L(q); * 2.4.1 从正规式到NFA(续1) (b) 对正规式pq,构造NFA N(pq)如右。其中s0为初态,f为终态,此NFA接受L(p)L(q); (c) 对正规式p*,构造NFA N(p*)如右。其中,s0为初态,f为终态,此NFA接受L(p*); 4 对于正规式(p),使用p本身的NFA,不再构造新的NFA。 ■ * 2.4.1 从正规式到NFA(续2) 正规式与NFA的对应关系: 正规式 NFA ε表示集合L(ε)={ε} a表示集合L(a)={a} P|Q表示集合L(P)∪L(Q) PQ表示集合L(P)L(Q) P*表示集合(L(P))* (r) 仍然表示集合L(r) * 2.4.1 从正规式到NFA(续3) 例2.11 用Thompson算法构造正规式r=(a|b)*abb的NFA N(r) 1 分解正规式 2 自下而上构造NFA 强调: 算法的构造与正规式一一对应 构造一个新的NFA最多增加两个状态 * 2.4.2 从NFA到DFA 1 NFA识别记号的“并行”方法 例2.12 从甲地到乙地,可以乘小轿车也可以骑自行车,具体路线如右图。其中c表示乘车,b表示骑自行车。现在要求从甲地到乙地,只许乘车而不许骑自行车,该如何走? 问题抽象:识别是否有从甲到乙标记为全c的路径 试探(串行): 甲 c 2 无路可走,退回 甲 c 1 c 3 无路可走,退回 甲 c 1 c 乙 到达乙地,成功 假设有足够多的小汽车,每次均到达小汽车可能到达的全体 并行: 甲 c {1, 2} c {3, 乙} 到达乙地,成功 * 2.4.2 从NFA到DFA(续1) 由于并行的方法在每试探一步时,考虑了所有的下一状态转移,因此所走的每一步都是确定的。 用NFA识别记号,并不采用串行的方法(算法不易构造,复杂度高且回溯),而是采用并行的方法,核心思想是将不确定的下一状态确定化。 NFA上识别记号的确定化方法 确定化的两个步骤(回顾DFA定义) 计算下一状态转移时: 1 消除ε 状态转移:ε-闭包(T) 2 消除多于一个的下一状态转移:smove(S, a) * 2.4.2 从NFA到DFA(续2) 定义2.6 状态集T的ε-闭包(T)是一个状态集,且满足: (1) T中所有状态属于ε-闭包(T); (2) 任何smove(ε-闭包(T),ε)属于ε-闭包(T); (3) 再无其他状态属于ε-闭包(T)。 ■ 根据定义,ε-闭包({s2})应包括: 1. s2自身 {s2} (1) 2. s4 {s2, s4} (2) 3. s5 {s2, s4, s5}(2) 算法 smove(S, a):从状态集S出发,标记为a的下一状态全体。与move(s, a)的唯一区别:用状态集取代状态 ε-闭包(T):从状态T出发,不经任何字符达到的状态全体。 * 2.4.2 从NFA到DFA(续3) 输入

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档