编译原理课件ch2-2.ppt

  1. 1、本文档共49页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编译原理课件ch2-2

编译原理 中国海洋大学计算机系 葛 琳 green.lyn@ 上次课回顾 词法分析器和语法分析器的典型关系:语法分析器为主导 上次课回顾(续) 词法分析器功能: 字符流?记号流(按词法规则) 词法记号、模式、词法单元概念 记号(单词符号): 记号名,属性值 二元组,属性值非必要 模式:描述属于该记号的词法单元的形式。 词法单元(词文):源程序中匹配一个记号模式的字符序列,是记号的实例 上次课回顾(续) 词法错误: 能发现和不能发现的错误 紧急方式的错误恢复 错误修补:词法分析阶段常见的有哪些错误?如何修补?删、插、替换、交换 上次课回顾(续) 字母表、串、语言、句子概念: 字母表:符号的有限集合。例:? = {0, 1} 串:符号的有穷序列。例:0110, ? 语言:字母表上的一个串集。例: {?, 0, 00, 000, …}, {?}, ? 某语言的句子:属于该语言的串。 语言和串的运算: 串:连接、积(指数、幂) 语言:和、连接、指数、闭包、正闭包 上次课回顾(续) 正规式: 一种特殊表达式,是模式的形式表示,用于表示语言。 正规式表示的语言称为正规集。 例: a | b, (a | b)* 正规式的代数定律 正规定义:为正规式命名 例: Pascal语言的标识符集合: letter ? A | B | … | Z | a | b | … | z digit ? 0 | 1 | … | 9 id ? letter(letter|digit)* 上次课回顾(续) 正规式中的缩写: “+”, “?”,[abc] 状态转换图: 状态转换图 识别关系算符relop的转换图 2.3 有限自动机 语言的识别器:程序,取串x为输入,当x是语言的句子时,回答“yes”,否则,回答“no”。 有限自动机(FA):通常用转换图表示,可以把正规式翻译成识别器。 不确定的有限自动机(NFA) 确定的有限自动机(DFA) 两种自动机都恰好能识别正规集 时空权衡: 确定的:快、更多空间 不确定的:省空间、慢 2.3 有限自动机 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: 2.3.1 不确定的有限自动机(续) NFA的转换表(状态转换矩阵) 2.3.1 不确定的有限自动机(续) NFA的转换图表示和转换表表示可以相互转换(注意标记开始状态和接受状态)。 NFA接受输入串x:当且仅当转换图中存在从开始状态到某个接受状态的路径,该路径各边上的标记拼成x。例如,上述NFA可识别aab 对于一个输入,可能有多条路径到达接受状态。 例:接受串a的某不确定 有限自动机 由NFA定义的语言是它接受的输入串集合。 2.3.2 确定的有限自动机 确定的有限自动机(Deterministic Finite Automaton,简称DFA)是一个数学模型,它包括: 有限的状态集合S 输入符号集合?(输入符号字母表) 转换函数move : S ? ? ? S 状态s0是唯一开始状态 F ? S是接受状态(终态)集合 与不确定有限自动机的区别: 任何状态都没有?转换 最多有一条标记为a的边离开s,即move是部分函数 2.3.2 确定的有限自动机(续) 如果用转换表表示DFA的转换函数,则表中每栏至多有一个状态。 很容易确定DFA是否接受某输入串,因为从开始状态起,最多只有一条达到某个接受状态的路径可由该串标记。 算法2.1 模拟DFA构造语言识别器 输入:串x,由eof结尾。一个DFA D,开始状态为s0,接受状态集合是F 输出:如果D接受x,回答“yes”,否则回答“no” 算法2.1 模拟DFA构造语言识别器 move(s,c):状态s在面临输入c时转换到的状态 nextchar():返回输入串

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档