[工学]第2章 词法分析.ppt

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

第2章 词法分析 主讲人:范 敏 第1章 编译器概述 第2章 词法分析 第3章 语法分析 第4章 语法制导的翻译 第5章 类型检查 第6章 运行时存储空间的组织和管理 第7章 中间代码生成 第8章 代码生成 第9章* 代码优化 第10章* 编译系统和运行系统 第11章* 面向对象语言的编译 第12章* 函数式语言的编译 2.1 词法记号及属性 2.2 词法记号的描述与识别 2.3 有限自动机 2.4 从正规式到有限自动机 2.5 词法分析器的生成器 本章内容 词法分析器:把构成源程序的字符流翻译成记号流,并完成和用户接口的一些任务 围绕词法分析器的自动生成展开 介绍正规式、状态转换图和有限自动机概念 2.1 词法记号及属性 几个基本概念 一般来说,程序输入字符流中有很多字符串的记号相同,即记号具有抽象性,是这些字符串的共性 如:标识符字符串是由数字、字符和下划线组成的非数字开头的字符串,因此这些字符串都可以用一个记号“标识符” 表示 模式规则描述具有相同记号的字符串集合,宏观地描述了这些字符串的共同特征 模式匹配对应于具有相同记号的字符串集合中的任意一个字符串 词法单元(lexeme,单词)是输入字符流中的字符串,通过模式匹配得到相应的记号,即词法单元具有具体性 词法单元与记号的关系 例:记号的例子 词法记号 词法单元例举 模式的非形式描述(说明) var var var for for for relation , = , = , … 或 = 或 = 或 … id sum, count, D5 由字母开头的字母数字串 num 3.1, 10, 2.8 E12 任何数值常数 literal “seg. error” 引号本身除外的任意字符串 关键字、保留字和标准标识符的区别 关键字是预先确定了含义的标识符,有的可以重新声明,有的不能重新声明 保留字是预先确定了含义且不能重新声明的标识符 标准标识符是预先确定了含义且可以重新声明的标识符。重新声明后的含义在它的作用域内有效 历史上词法定义中的一些问题 忽略空格带来的困难——难于确定关键字还是标识符 DO 8 I ? 3. 75 DO8I ? 3. 75 DO 8 I ? 3, 75 关键字是否保留 关键字如果保留,则不能被重新声明 关键字如果不保留,则可以被重新声明为标识符 如FORTRAN语言中,关键字字符串的确切含义将与它的位置和上下文有关 词法分析器通过记号的属性来说明记号的附加信息,以方便正确地使用记号 记号影响语法分析的决策,属性影响记号的翻译 例:由语句position := initial + rate * 60的记号和属性值组成的二元组序列?词法记号,属性? : ?id,指向符号表中position条目的指针? ?assign _ op,:= ? ?id,指向符号表中initial条目的指针? ?add_op,+? ?id,指向符号表中rate条目的指针? ?mul_ op, *? ?num,整数值60? 词法分析器对源程序采取非常局部的观点 C语言词法分析器不能发现下面的错误: fi (a == f (x) ) … Pascal语言词法分析器在实数是a.b格式下,可以发现下面的错误: 123. 紧急方式的错误恢复技术 删除出错开始的字符串(即剩余输入前缀) ,直到词法分析器发现一个正确的记号 错误恢复技术(修补方式) 删除一个多余的字符 插入一个遗漏的字符 用一个正确的字符代替一个不正确的字符 交换两个相邻的字符 如: fi (a == f (x) ) … 换成为 if (a == f (x) ) … 2.2 词法记号的描述与识别 几个基本概念 字母表:符号的有限集合, 例:? = {0,1,a} 串:符号的有穷序列,例:0110,0a,a,?(空串,长度为0的特殊串) 语言:字母表上串的一个集合 例: {?,0,00,000,…}, {?}, ? 注意: {?}≠? 句子:属于某种语言的串 串可以按照一定方式组成具有确定意义的句子 例:I am a student. (基于英文字母表的英文句子) 语言的组成 自然语言的组成:字 → 词 →句 → 语言 形式语言的组成:字母表符号 → 串 →句子 → 语言 形式语言的构造 串的运算 串连接(积),例:xy,s? = ?s = s 串积(指数),例:s0为?,si为si -1s(i 0) 语言(串的集合)的运算(s、t为集合元素) 和(串并集):L∪M = {s

文档评论(0)

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

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

1亿VIP精品文档

相关文档