第八章 词法分.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第八章 词法分

第八章 词法分析 第一节 词法分析概述 一. 词法分析的功能 1. 功能 扫描源程序的字符串,按照词法规则,识别出单词符号作为输出;对识别过程中发现的词法错误,则输出有关的错误信息。 第八章 词法分析 2. 词法分析器和语法分析器的关系 (1)词法分析作为单独的一遍 第八章 词法分析 (2)词法分析作为子程序 第八章 词法分析 二. 词法分析器的输出形式 1. 单词的种类 (1)标识符:用来命名程序中出现的变量、数组、函数、过程、标号等 (2)基本字:也可称关键字或保留字, 如if、while、for、do、goto等 (3)常数:各种类型的常数, 如216、3.14159、TRUE等 (4)运算符:如+、-、*、/等 (5)界符:如;、:、/*、*/等 2.单词的输出形式 (1) 二元式 (单词类别,单词的属性) (2) 单词类别的划分 基本字、运算符、界符:一字一码 标识符:单列一种 常数:按类型分类 一个例子: A:=B50+10; 的输出为: (标识符的编码,‘A’) (:=的编码,—) (标识符的编码,‘B50’) (+的编码,—) (整数的编码,‘10’) (;的编码,—) 第二节 词法分析器的结构 一. 扫描缓冲区 1. 输入缓冲区:源程序?输入缓冲区 2. 预处理程序:取消注解,剔除无用的空白、跳格、回车、换行等 3. 扫描缓冲区:从输入缓冲区输入固定长度的字符串到另一个缓冲区(扫描缓冲区),词法分析可以直接在此缓冲区中进行符号识别。其结构为: 二. 符号的识别 1. 词法分析技术——超前搜索 为了判定一个单词符号的类别,必须扫描到某一地方,而该单词符号并没有这么长,这种扫描方式叫做“超前搜索”。 (1)基本字的识别 DO100I=1,10 DO100I=1.10 IF(5.EQ.M)GOTO 100 IF(5)=100 (2)标识符的识别:读到非字母数字 (3)常数的识别:根据常数的格式;大多数常数后都有运算符或界符 (4)运算符的识别:需要超前搜索,如** (5)界符的识别:需要超前搜索,如/* 三. 词法分析器的结构 第三节 状态转换图 一. 状态转换图的定义 有限的有向图 有向边上标记字符 唯一初态 若干终态(至少一个) 二. 状态转换图识别的串 从初态出发到某一终态路径上字符的连接。下图是识别标识符的状态转换图: 第四节 词法分析器的设计 一. 单词符号 第四章设计的语言允许下述单词: 标识符、数字串、begin、end、integer、if、 then、else、function、read、write、 -、*、、=、、 =、、=、:=、;、(、) 三. 实现方法 每个状态结对应一小段程序 分支状态——if或case语句 循环状态——while语句 终态——return语句 四. 一个示意算法 全局量及过程: (1)token:字符数组 (2)character:字符变量 (3)getchar:取一字符 (4)getnb:读到非空白字符 (5)concatenate:连接 (6)letter和digit:布尔函数 (7)reserve:查保留字表 (8)retract:退一字符;character置空 (9)buildlist:将token中的标识符存入符号表,并将其在符号表中的位置填入val (10)dtb:将token中的数字串转换成二进制,并存入常数表,位置填入val (11)val:存放标识符在符号表中的位置,或常数在常数表中的位置 (12)return(c,val):返回二元式 (13)error:出错处理 第八章习题 实验题:8-3、4-13和8-4 思考题:8-5、8-6 * * 输入串 词法分析器 语法分析器 单词流 输入串 词法分析器 语法分析器 符号表 取下一单词 返回下一单词 区分单词所属的类(整数编码) 单词的值 左缓冲区 右缓冲区 起点指示器 搜索指示器 预处理子程序 词法分析器 输入缓冲区 扫描缓冲区 单词符号 输入 1 2 3 x y 0 1 2 字母 其它字符 字母或数字 * 0 4 1 2 3 5 6 7 开始 空白 字母/数字 字母 非字母数字 数字 非数字 = - * * * 数字 二. 状态转换图 8 9 ( ) 10 11 12 = 13 14 15 16 其它 = 17 18 19 :

文档评论(0)

189****8221 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档