07-第三章 有限自动机与词法分析器.ppt_第1页
07-第三章 有限自动机与词法分析器.ppt_第2页
07-第三章 有限自动机与词法分析器.ppt_第3页
07-第三章 有限自动机与词法分析器.ppt_第4页
07-第三章 有限自动机与词法分析器.ppt_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第三章 有穷自动机与词法分析器,任课教师 王养廷,主要内容,词法分析 有穷自动机,3.1 词法分析,词法分析功能 源程序文件 ASCII编码 文本文件 例如:“A1”保存为4131 单词 源程序的语法成分 例如:if, (, ,3.1 词法分析,词法分析功能 Token 单词的内部表示,例如:,3.1 词法分析,词法分析功能 标识符 用户定义的符号 作为一类来处理 常量 可以作为一类或多类 保留字 用来分隔语法成分 一般每个一类 与保留字的区别(算法设计?),3.1 词法分析,词法分析功能 词法分析输入:源程序 词法分析输出:Token序列 词法分析功能:把源程序转换成Token序列 词法分析

2、器种类 作为语法分析的一个子程序,每次产生一个Token 作为编译器独立的一遍、生成Token序列,3.1 词法分析,词法分析功能 单词识别 从字符串中分离出单个单词 主要的单词 标识符 正整数 保留字 符号 ,3.1 词法分析,词法分析功能 词法分析复杂性,例子: DO 10 I = 1 , 100 DO 10 I = 1. 100,3.1 词法分析(续),单词内部表示 标识符的内部表示 指针方法 其它符号的内部表示 为什么单独处理标识符,3.1 词法分析(续),保留字 什么识保留字 分析保留子的方法 保留字表,数据实现 非保留字表,程序实现 空格、制表符、换行符 它们可以作为分隔符 有的语

3、言空格符无词法意义 例如:下面两行等价 beginx begin x 字符串中的空格需要单独处理 换行可以用于行计数,3.1 词法分析(续),括号类配对 Pascal语言中的括号类 begin .end record.end if.then . (.) . 检查配对 使用计数器 更准确地方法如何实现?,3.1 词法分析(续),向前看多个字符 词法分析有时需要向前看多个字符,例如: 10 10.12 10.12 有时需要看到第一个.后的字符才能确定 处理技术 沿着收到的字符倒退到终态 把回退字符集如缓冲区,以便下一次扫描 引入Token标志 例如:12.3e+q的分析,3.1 词法分析(续),字

4、符串空间 字符串的存储问题 一般方法 使用缓冲区记录开始地址和长度 注意检查是否有重复存储的字符串 字符编码问题,mart:,mask:,word:,3.1 词法分析(续),词法错误校正 目的:发现更多的错误,分析继续下去 手段: 删去已读过的字符 删去已读过的第一个字符 特别注意越行字符串的处理,3.1 词法分析(续),词法分析结束 使用程序结束标志 例如:Pascal中的end. 使用文件结束标志 可以有效处理错误程序,3.1 词法分析(续),使用词法分析的好处 使语法分析与语义分析更简练 便于使用自动机理论描述 有利于提高编译器的效率 有利于编译器的移植,3.2 确定有穷自动机,说明 有

5、穷自动机(FA) 确定有穷自动机(DFA) 非确定有穷自动机(NFA),3.2 确定有穷自动机(续),定义 确定有穷自动机(DFA)有以下几个部分组成: 符号集(输入符号集); 状态集合SS=S0, S1, S2, S3. Sn; 开始状态: S0 ; 转换函数:SS X SS; 终止状态集:Si1, Si2. Sik; 其中表示给定一个状态和输入字符就可以唯一确定下一个状态,3.2 确定有穷自动机(续),自动机定义方式 图形法 转换表法 函数法,3.2 确定有穷自动机(续),DFA例子(函数法) 符号集=0, 1, 2, . ,9; 状态集合SS=S0, S1; 开始状态: S0 ; 转换函

6、数:SS X SS; (S0, d)= S1 , (S1, d)= S1 终止状态集:S1;,3.2 确定有穷自动机(续),DFA有向图表示 状态 开始状态 转换边 接受(或终止)状态,3.2 确定有穷自动机(续),接受 自动机接受字符串 作用?,3.2 确定有穷自动机(续),特殊例子,3.2 确定有穷自动机(续),DFA举例,3.2 确定有穷自动机(续),练习 实数的DFA 第二个位置上为2的所有正整数 标识符,由字母字符引导的数字、字母字符串。 接受偶数个0的DFA 接受奇数个1的DFA 接受偶数个0和偶数个1的DFA,3.2 确定有穷自动机(续),实数的DFA,3.2 确定有穷自动机(续

7、),第二个位置上为2的正整数(包括一位),3.2 确定有穷自动机(续),思考 将上题改成不包括一位,对应的DFA是什么?,3.2 确定有穷自动机(续),标识符,3.2 确定有穷自动机(续),思考: 标识符(带下划线)?,3.2 确定有穷自动机(续),接受偶数个0,3.2 确定有穷自动机(续),思考与练习 奇数个0? 偶数个0和偶数个1?,3.2 确定有穷自动机(续),确定有穷自动机状态表 状态转换可以使用函数来表示 转换函数:SS X SS; 状态转换可以使用图形来表示 状态转换图 状态转换还可以使用表来表示,3.2 确定有穷自动机(续),状态转换表示例,1 确定有穷自动机(续),状态表说明 主要状态:第一列 输入字符:第一行 终结状态:带有*号 每个单元的状态表示某个状态接受某个字符后的状态 状态表便于机器处理,3.2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论