《编译原理实践及应用》PPT教学课件-第3章 词法分析.ppt

《编译原理实践及应用》PPT教学课件-第3章 词法分析.ppt

  1. 1、本文档共101页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第三章 词法分析 本章要求 主要内容:词法分析的任务,手工实现词法分析程序,正规式与有穷自动机,词法分析程序的自动生成 重点掌握:词法分析器的功能和接口,用状态转换图设计和实现词法分析程序,正规文法、正规式和有穷自动机的概念及相互转换 词法分析程序所处的位置: 3.1 词法分析器的功能 单词:是语言中具有独立意义的最小单位,常用单词分类: 保留字:具有固定意义的标识符 运算符 界符 标识符:表示各种名字 常数 对于一个程序设计语言,保留字、运算符和界符都是确定的,可以给以固定的编号(种别码)。 标识符是根据构词规则定义的,常数是符合定义的各种类型的常数 种别码:是对能识别的单词的分类编码 有多种编码方式: 标识符一般统一为一种:一个编号 常数按类型分别编码:整数、实数、布尔、字符 关键字一般一字一种 运算符一般一符一种 界符一般一符一种 某语言单词的种别码定义举例 词法分析器的输出 1. Token串: 输出源文件中各个有用的单词 格式: (单词的种别码,单词符号的属性值) 单词种别:是对能识别的单词的分类编码(P42) 单词符号的属性值:单词的某种特性或特征 常数的值,标识符的名字等 保留字、运算符、分界符的属性值可以省略 文件存放最好有格式,如每个单词占一行方便“语法分析”程序调用 源程序 token文件 {this is a sample program writing in simple language} program example1; {used for illustrating compiling process} var a,b,c:integer; x:char; begin if (a+c*3 b) and (b3) then c:=3; end. program example1 ; var a , b , c : integer ; x : char ; begin if ( a + 2. 符号表 各种常数和标识符一般放在符号表中,在输出的token文件中的单词属性值则存放单词在符号表中的指针 符号表的格式:字符串 if (ab2) test:=3; 格式2:(用指针) {this is a sample program writing in simple language} program example1; {used for illustrating compiling process} var a,b,c:integer; x:char; begin if (a+c*3 b) and (b3) then c:=3; End. 3. 其它输出:错误信息和源程序清单 错误信息应该详细,准确,指出出错的具体行、列位置,发生了哪类错误等,方便用户修改 错误处理 应尽可能发现更多的错误 处理方式 每个程序段单独处理错误 统一处理错误(商用软件系统) 记录式的文件 数据库 统计表明,现代软件系统中, 75%的程序代码都是用于处理错误与错误信息 商业系统中错误处理的特点是:统一错误编号,编制文档指出错误信息的含义、应对措施、解决方案 词法错误类型 非法字符 单词拼写错误 难以发现下面的错误 fi (a = x ) … 在实数是a.b格式下,可以发现下面的错误 123. 词法分析是编译过程中的一个阶段,在语法分析前进行。可以作为一个独立的子程序,独立出来的原因: 简化设计 改进编译效率 增加编译系统的可移植性 可以和语法分析结合在一起作为一遍,由语法分析程序调用词法分析程序来获得当前单词供语法分析使用。 3.2 词法分析程序的设计 任务: 组织源程序的输入; 按规则拼单词,并转换成二元式形式; 删除注解行、空格及无用符号; 行计数、列计数; 列表打印源程序; 发现并定位词法错误; 如需要,还要建立关键字表、符号表、常数表等表格。 词法分析程序的接口 识别单词前作如下假定: 关键字就是保留字 单词中间不能有分界符(如空格、空白、界符和算符等) 单词中间不能有注释 单词必须在一行内写完,换行后认为是另一个单词 一个单词不能超过规定长度 识别单词 主要包括如下几种单词的识别: 标识符的识别:字母+(字母/数字) 关键字的识别:与标识符相同,最后查表 常数的识别 界符和算符的识别 单词的构成规则用状态转换图表示 一个状态图可用于识别一定的字符串,大多数程序设计语言的单词符号都可以用转换图来识别。 识别过程是:从初始状态0开始,若读入一个字母,转入1状态,若再读入字母或数字,仍处于1状态,否则转

文档评论(0)

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

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

1亿VIP精品文档

相关文档