第二章词法分析..pptVIP

  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文档。上传文档
查看更多
* 2.3 记号的识别-有限自动机 DFA识别输入序列的算法被称为DFA模拟器或驱动器,它与DFA共同构成词法分析器的核心,特点是算法与模式无关。 算法2.1 模拟DFA 输入 DFA D和输入字符串x (eof)。D的初态为s0,终态集为F 输出 若 D 接受 x,回答“yes”,否则回答“no”。 方法 用下述过程识别x: s := s0; ch := nextchar; -- 初值 while ch≠eof -- x结束? loop s := move(s, ch); ch := nextchar; -- 循环转移 end loop; if s is in F -- 终态返回 then return “yes”; else return “no”; end if; * 2.3 记号的识别-有限自动机 识别abb: 1. s = 0, ch = a 2. s = 1, ch = b 3. s = 2, ch = b 4. s = 3, ch = eof 5. yes 识别abab: 1. s = 0, ch = a 2. s = 1, ch = b 3. s = 2, ch = a 4. s = 1, ch = b 5. s = 2, ch = eof 6. no (a|b)*abb的DFA * 2.3 记号的识别-有限自动机 有限自动机的等价 定义2.6 若有限自动机M和M’识别同一正规集,则称M和M’是等价的,记为M=M’。 提示:正规式与有限自动机从两个侧面表示正规集。正规式是描述,自动机是识别。因此,当它们表示相同集合时,均存在等价的问题。 有几种可能的等价? * 2.4 从正规式到词法分析器 构造词法分析器的一般方法和步骤: 描述:用正规式对模式进行描述; 构造NFA:为每个正规式构造一个NFA; 确定化:将NFA转换成等价的DFA; 最小化:优化DFA,使其状态数最少; 构造词法分析器:由DFA构造词法分析器。 问题:为何不直接从正规式构造DFA? 机器构造需要规范的算法; 正规式→NFA:有规范的一对一的构造算法; DFA→分析器:有便于记号识别的算法。 * 2.4 从正规式到词法分析器 从正规式到NFA 算法2.2 Thompson 算法 输入 字母表∑上的正规式 r 输出 接受 L(r) 的NFA N 方法 首先分解 r,然后根据下述步骤构造NFA: 对ε,构造NFA N(ε) 接受{ε}; 对∑上的每个字符a,构造NFA N(a) 接受{a}; 若N(p)和N(q)是正规式p和q的NFA,则 ε a r|s rs r* (r) * 2.4 从正规式到词法分析器 (a)对正规式p|q,构造NFA N(p|q) 接受L(p)∪L(q); (b)对正规式pq,构造NFA N(pq) 接受L(p)L(q); (c)对正规式p*,构造NFA N(p*) 接受L(p*); (d)对于正规式(p),使用p本身的NFA,不再构造。 ε a r|s rs r* (r) * 2.4 从正规式到词法分析器 [例2.11] 用Thompson算法构造正规式r = (a | b)* a b b的NFA N(r) 。 先分解正规式,再自下而上构造NFA 注意: 算法的构造与正规式一一对应 构造一个新的NFA最多增加两个状态 * 上次课总结 NFA定义M =(S,∑,move,s0,F) NFA直观表示:状态转换图与状态转换矩阵 NFA识别记号 NFA的不确定性 DFA-NFA的特例 模拟DFA的算法 自动机的等价 构造词法分析器的步骤 Tompson算法 * 2.4 从正规式到词法分析器 从NFA到DFA NFA识别记号的“并行”方法 [例2.12] 从甲地到乙地,可以乘汽车也可以骑自行车,具体路线如右图。其中c表示乘车,b表示骑自行车。现在要求从甲地到乙地,只许乘车而不许骑自行车,该如何走? 抽象:识别是否有从甲到乙标记为全c的路径 串行(试探): 甲 c 2 无路可走,退回 甲 c 1 c 3 无路可走,退回 甲 c 1 c 乙 到达乙地,成功 并行:有多辆汽车,每次到达汽车能到达的全体 甲 c {1, 2}c {3, 乙} 到达乙地,成功 * 2.4 从正规式到词法分析器 由于并行的方法在每试探一步时,考虑了所有的下一状态转移(所有下一状态作为一个状态集合),因此所走的每一步都是确定的。 用NFA识别记号,并不采用串行的方法(算法不易构造,复杂度高且回溯),而是采用并行的方法,核心思想是将不确定的下一状态确定化。 NFA上识别记号的确定化方法是在计算下一

文档评论(0)

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

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

1亿VIP精品文档

相关文档