A2013-9-CH03--词法分析-1.pptVIP

  1. 1、本文档共82页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第3章 词法分析 基础知识:PASCAL、C语言、正规表达式 正规文法、有限自动机 知识点:词法分析器的作用、地位 记号、模式 词法分析器的状态转换图 词法分析 简介 3.1 词法分析程序与语法分析程序的关系 3.2 词法分析程序的输入与输出 3.3 记号的描述和识别 3.4 词法分析程序的设计与实现 小结 简介 词法分析任务由词法分析程序完成 本章内容安排 讨论用手工方式设计并实现词法分析程序的方法和步骤 词法分析程序的作用 词法分析程序的地位 源程序的输入与词法分析程序的输出 单词符号的描述及识别 词法分析程序的设计与实现 词法分析程序的作用 扫描源程序字符流 按照源语言的词法规则识别出各类单词符号 产生用于语法分析的记号序列 词法检查 创建符号表 把识别出来的标识符插入符号表中 与用户接口的一些任务: 跳过源程序中的注释和空白 把错误信息和源程序联系起来(如,行号) 3.1 词法分析程序与语法分析程序的关系 1、词法分析程序作为独立的一遍 输出放入一个中间文件 磁盘文件 内存文件(提高存取效率) 2、词法分析程序作为语法分析程序的子程序 3、词法分析程序与语法分析程序作为协同程序 协同程序: 如果两个或两个以上的程序,它们之间交叉地执行,这些程序称为协同程序。 3.2 词法分析程序的输入与输出 一、词法分析程序的实现方法 实现方法不同,源程序的输入方法也不同 二、输入缓冲区 三、词法分析程序的输出 一、词法分析程序的实现方法 利用词法分析程序自动生成器 从基于正规表达式的规范说明自动生成词法分析程序。 生成器提供用于源程序字符流读入和缓冲的若干子程序 利用传统的系统程序设计语言来编写 利用该语言提供的输入/输出能力来处理读入操作 利用汇编语言来编写 需要直接管理源程序字符流的读入 二、输入缓冲区 配对缓冲区 把一个缓冲器分为相同的两半,每半各含N个字符,一般N=1KB或4KB。 测试指针的过程(1) IF (向前指针在左半区的终点) { 读入字符串,填充右半区; 向前指针前移一个位置; } ELSE IF (向前指针在右半区的终点) { 读入字符串,填充左半区; 向前指针移到缓冲区的开始位置; } ELSE 向前指针前移一个位置; 每半区带有结束标记的缓冲器 测试指针的过程(2) 向前指针前移一个位置; IF (向前指针指向 eof ) { IF (向前指针在左半区的终点) { 读入字符串,填充右半区; 向前指针前移一个位置; }; ELSE IF (向前指针在右半区的终点) { 读入字符串,填充左半区; 向前指针指向缓冲区的开始位置; }; ELSE 终止词法分析; } 记号、模式和单词 表3-1 记号:是指某一类单词符号的类别编码(种别编码),如标识符的记号为id,数的记号为num等。 关键字/基本字、标识符、常数、运算符、分界符等 模式:是指某一类单词符号的构词规则,如标识符的模式是“由字母开头的字母数字串”。 单词:是指某一类单词符号的一个特例,如position是标识符。 记号的属性 词法分析程序在识别出一个记号后,需要给记号以属性,用来记住记号的附加信息,以便需要时使用。 记号影响语法分析的决策,属性影响记号的翻译。 在词法分析阶段,对记号只能确定一种属性 标识符:单词在符号表中入口的指针 常数:它所表示的值 关键字:(一符一种、或一类一种) 运算符:(一符一种、或一类一种) 分界符:(一符一种、或一类一种) 赋值语句 P:=I+R*60 的词法分析结果 id,指向标识符P在符号表中入口的指针 assign_op,- id,指向标识符I在符号表中入口的指针 plus_op,- id,指向标识符R在符号表中入口的指针 mul_op,- num,整数值60 词法分析的关键之一是如何识别单词的问题,其中最重要的是标识符的识别。 3.3 记号的描述和识别 一、词法与正规文法 二、记号的文法 三、状态转换图与记号的识别 一、词法与正规文法 把源语言的文法G分解为若干子文法: G0、 G1、G2、…、Gn 正规式与正规集举例 例:令 字母表?=?a,b? (a)正规式 a?b 正规集: ?a,b? (b)正规式 (a?b )(a?b ) 正规集: ?aa,ab,ba,bb? (c

文档评论(0)

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

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

1亿VIP精品文档

相关文档