[工学]编译原理--ch2-2.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文档。上传文档
查看更多
[工学]编译原理--ch2-2

2.2.4 状态转换图(续) 识别空白的转换图 delim ? blank | tab | newline ws ? delim+ 21 22 开始 delim other * delim 20 2.2.4 状态转换图(续) 状态转换图的合并: 前三个合并:将开始状态合并成一个。 合并识别空白的转换图: 开始状态合并 识别空白的转换图的接受状态动作为:回到开始状态,识别下一个记号。 2.2.4 状态转换图(续) 构造词法分析器的一种简单办法: 用状态转换图描述源语言的词法记号结构; 手工把这种状态转换图翻译成识别词法记号的程序。 例如下面这段伪代码就模拟了上述识别relop的状态转换图的识别过程。 2.3 有限自动机 词法分析器还可以用词法分析器的生成器(例如Lex)由正规式而自动生成。 本节开始讨论词法分析器的自动生成过程,其核心是有限自动机。 2.3 有限自动机(续) 语言的识别器(recognizer):程序,取串x为输入,当x是语言的句子时,回答“yes”,否则,回答“no”。 有限自动机(finite automata,FA):通常用转换图表示,其本质是识别器的模型化表示。 不确定的有限自动机(Nondeterministic FA,NFA) 确定的有限自动机(Deterministic FA,DFA) 两种自动机都恰好能识别正规集 时空权衡: 确定的:快、更多空间 不确定的:省空间、慢 2.3 有限自动机(续) 两种有限自动机的区别: NFA对于边上的标记没有限制:一个符号可以标记从同一个状态出发的多条边;允许用空串符号?标记边。 DFA则对边上的标记有限制:从同一个状态出发,一个符号只可以标记一条边;不允许?标记。 A B C a a ? A C B a a 2.3 有限自动机 可以通过构造有限自动机的方式将正规式转换成语言的识别器,词法分析器的生成器就是这样做的。 构造FA 正规式 识别器 正规式 NFA DFA 最简DFA 识别器 2.3 有限自动机 不确定的有限自动机(NFA) 确定的有限自动机(DFA) 从NFA到DFA的变换 DFA的化简 2.3 有限自动机 本节的例子: 正规式 (a|b)*ab表示的语言 类似的语言: 以.o结尾的文件名(正规式为(.|o|c)*.o),其中c代表除.和o以外的任何字符。 2.3.1 不确定的有限自动机 不确定的有限自动机(Nondeterministic Finite Automaton,NFA)是一个数学模型,它包括: 有限的状态集合S 输入符号集合?(输入符号字母表,决不包含?) 转换函数move : S ? (??{?}) ? P(S)(S的幂集) 状态s0是唯一开始状态 F ? S是接受状态(终态)集合 2.3.1 不确定的有限自动机(续) 这种有限自动机可以用状态转换图表示。请注意: 此处相同的符号可以标记出自一个状态的多条边。 输入符号和?都可以用来标记边 识别语言(a|b)*ab 的NFA: 1 2 开始 a 0 a b b A B C a a ? 2.3.1 不确定的有限自动机(续) NFA的转换表(状态转换矩阵) 状态 输 入 符 号 a b 0 {0, 1} {0} 1 ? {2} 2 ? ? 1 2 开始 a 0 a b b 对应的NFA 转到NFA到 DFA的变换 2.3.1 不确定的有限自动机(续) NFA的转换图表示和转换表表示可以相互转换(注意标记开始状态和接受状态)。 NFA接受输入串x:当且仅当转换图中存在从开始状态到某个接受状态的路径,该路径各边上的标记拼成x。例如,上述NFA可接受aab 对于一个输入,可能有多条路径到达接受状态。 例:接受串a的某不确定 有限自动机 由NFA定义的语言是它接受的输入串集合。 0 1 a ? 2.3.1 不确定的有限自动机(续) 例:识别aa*|bb*的NFA 0 3 1 2 4 开始 ? ? a b a b 2.3.2 确定的有限自动机 确定的有限自动机(Deterministic Finite Automaton,简称DFA)是一个数学模型,它包括:(DFA是NFA的特殊情况) 有限的状态集合S 输入符号集合?(输入符号字母表) 转换函数move : S ? ? ? S 状态s0是唯一开始状态 F ? S是接受状态(终态)集合 与不确定有限自动机的区别: 任何状态都没有?转换 对于任何状态s和任何输入符号a,最多有一条标记为a的边离开s,即move是部分函数 部分函数: 定义域中的任 何值都至多映 射到值域中的 一个值; 且并非定义域 中的每个值在 值域中都有对 应的值。 2.3.2 确定的有限自

文档评论(0)

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

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

1亿VIP精品文档

相关文档