编译原理 第二章词法分析.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文档。上传文档
查看更多
以下将ε_closure( I ) 简写为closure(I) Closure(I) =I ? { Sk | if Sj Sk, Sj ? Closure(I) , Sk ? Closure(I) } 状态集合的空闭包ε_closure 总是包含状态集合本身 ε 第二十九页,共四十四页,2022年,8月28日 if I={0},the ε_closure( I )={ 例如: NFA ε 10 0 1 2 4 5 3 6 7 8 9 a b a b b ε ε ε ε ε ε ε } 7 4, 2, 1, 0, 第三十页,共四十四页,2022年,8月28日 Ia子集 I 是状态集合, a 是字母表的一个字符 Move(I,a)={t|s∈I,and s t} Ia= ε_closure ( Move( I , a ) ) a 第三十一页,共四十四页,2022年,8月28日 第一页,共四十四页,2022年,8月28日 这不是一个DFA。如果不使用系统化的方法将所有的记号都合并为一个巨大的DFA,将非常复杂。 1 3 letter letter,digit 2 [other] 5 digit digit 4 [other] 7 6 = 9 8 10 第二页,共四十四页,2022年,8月28日 解决这个问题的方法 将DFA扩展到NFA (对于当前的输入,当前的状态将转换为多个状态) NFA 转换为 DFA的算法 第三页,共四十四页,2022年,8月28日 不确定的有穷自动机(NFA) NFA M=(S,Σ,T,S0,A), 其中 S 是状态的集合 ∑是字母表 T是转换函数: S X (∑∪{ε})- S的子集 S0∈S 初始状态 A ? S 接受状态集合 第四页,共四十四页,2022年,8月28日 NFA 类似于 DFA,除了 扩展 ∑ 包括 ε NFA 可以包含 ε-转换—无需考虑输入串就有可能发生的转换 1 2 ε 扩展T的定义 每一个字符都可以导致多个状态。因此T的值是状态的一个集合而不是单独的状态 第五页,共四十四页,2022年,8月28日 例 NFA M=({S,P,Z},{0,1},f,S,{Z}) 其中 f(S,0)={P} f(S,1)={S,Z} f(Z,0)={P} f(Z,1)={P} f(P,1)={Z} 矩阵表示: 0 1 S {P} {S,Z} P {} {Z} Z {P} {P} 0 0 1 状态图表示: S P Z 0 0,1 1 1 1 Z 第六页,共四十四页,2022年,8月28日 L(M): 由自动机 M 所接受(识别)的语言 L(M) :is the set of strings of character字符c1c2…cn ,每一个ci 都属于 ∑∪{ε}, 且存在关系:s1 在T(S0,c1)中,s2在T(S1,c2)中,…,Sn 在T(Sn-1,cn) 中, s0 是初始状态, Sn 是A的元素 c1c2…cn 中的任一 ci 都可能是ε 真正被接受的串是删除了ε的串 c1c2…cn 第七页,共四十四页,2022年,8月28日 非确定性 接受特定串的转换序列并不由状态和下一个输入字符在每一步确定下来 第八页,共四十四页,2022年,8月28日 例如 1 2 3 4 a a b ε ε ε 下面两个转换序列都可接受串 “abb” : 1 2 4 2 4 a b ε b 1 3 4 2 4 2 a ε ε b ε 4 b 第九页,共四十四页,2022年,8月28日 2.3.3 用代码实现有穷自动机 构建扫描程序(词法分析程序)的过程: 正则表达式 DFA 扫描程序 正则表达式表示一种模式,用来描述记号 DFAs 表示按照正则表达式描述的模式接受符号串的算法 第十页,共四十四页,2022年,8月28日 从正则表达式到DFA(2.4节) 有穷自动机构造词法分析程序 第十一页,共四十四页,2022年,8月28日 1 用代码实现 DFA 用代码实现DFA的一般算法 用一个变量保持当前的状态 将转换写成一个双层嵌套的case语句而不是一个循环 第一个case语句测试当前的状态 嵌套着的第2层测试输入字符及所给的状态 第十二页,共四十四页,2022年,8月28日 state:=1;{start} while state=1 or 2 do case state of 1:case input character of letter:advance the input; state:=2; else state:=…{error or other};

文档评论(0)

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

你好,我好,大家好!

版权声明书
用户编号:7140162041000002

1亿VIP精品文档

相关文档