- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第三章 词法分析及有穷自动机 §1. 词法分析程序的任务 一、词法分析程序的任务及处理方式 1. 词法分析程序的任务 主要任务:从左至右逐个字符地对源程序进行扫描,产生一个个单词序列,用以语法分析。 词法分析程序(扫描程序):执行词法分析的程序。 2. 词法分析程序的处理方式 词法分析程序与语法分析程序接口方式有两种: 第一种方式: 二、词法分析程序的I/O 1. 输入 字符串表示的源程序 2.输出 单词符号序列或单词符号。 1) 程序语言的单词符号 单词:指语言中具有独立意义的最小语法单位。 语言中的单词符号: 一般可归结为五种: 保留字(基本字):如if, for, and 等――个数确定 标识符:表示常量、变量、类型、过程等名称――个数不确定 常数:如34,-0.37等――个数不确定 运算符:如+,-,*,/, 等――个数确定 界线符:如逗号,分号,括号等――个数确定 注:·保留字,运算符,界线符可列表,供词法分析程序查询; ·标识符和常数可用正规文法或正规式描述,供词法分析程序识别。 2) 输出的单词形式 二元组:(单词的种别码,单词自身值) 1o 单词的种别码:表示单词的种类 分类的原则:处理简单 分类的方法:使每一个单词对应一个整数码 分类的目的:最大限度地区别各个单词 单词地分类法有多种: 一种一类 一字一类或一符一类 具体: 保留字:一字一种。如: if 1 then 2 。。。 标识符:统归一种。 常数:整数,实数,布尔 统为一种 或按类型分 整数 11 实数 12 布尔 13 运算符:+,-,*,/,, 等 统为一种; 或一符一种: 2o 单词自身值(可有可无) 单词自身值是单词的机内代码或者单词在表格中的地址码。 如: 标识符:自身的字符串(1,’a’) 常数:自身的二进制数(11,’100’的二进制数) 例:一种一类的单词输出形式 设保留字、标识符、常数、运算符、分界符 的种别码分别为1,2,3,4,5;将if a1 then b:=10表示为一种一类的单词输出形式。 例:采用一字一类或一符一类地分类技术,则保留字单词自身值可无,但事先构造一个保留字单词对照表,其值可在词表中查到。 §2. 词法分析程序的设计过程 一、词法分析程序的设计过程 设计过程: 词法分析程序设计过程: ①把有的单词(如:标识符和常数)用正规文法或正规式描述; ②将正规文法或正规式转换成等价的状态转换图(最小化的DFA图); ③ 根据状态转换图设计词法分析程序(状态转换图可视为词法分析程序的框图)。 二、用状态转换图设计词法分析程序 1. 词法分析程序的预处理 词法分析程序在识别单词前,需要对输入到缓冲区的源程序进行预处理。 预处理: 删去无用的空格,跳格,回车和换行等编辑性字符; 删去注释部分 每次对一串定长(如120个字符)的输入字符进行预处理,并装入一个指定的扫描缓冲区中。 扫描缓冲区是一个一分为二的区域,每一个区域可容纳120个字符,且相互交替使用。 搜索指针从单词起点开始搜索,如果遇到半区的边界但尚未达到单词的终点时,则可将后续的120个输入字符装进缓冲区的另一半中。 2. 状态转换图 状态转换图是为了识别正规文法或正规式而专门设计的有向图。他是有穷自动机的非形式化表示。 状态转换图的组成: 1o 有限个状态结点 状态结点代表正规文法的非终结符(用单圈表示); 开始状态结点:用双箭头指示; 终止状态结点:用双圈表示。 2o 弧线→弧上的标记x指明在射出弧的结点状态下可能出现的输入字符或字符类,即终结符。(→表示机器的识别方向). 大多数单词结构是用正规文法描述的 例: 标识符∷=字母|标识符字母|标识符数字 整数∷=数字|整数数字 运算符∷=+|-|*|/|…. 界线符∷=;|,| ( | ) |….. 。。。 3.由正规文法构造状态转换图 1) 左线性正规文法构造状态转换图 左线性正规文法的一般形式:U ∷= a|wa 左线性正规文法构造状态转换图的步骤如下: 增加一个开始状态结点s(假定文法的词汇表中不含s); 以每个非终结符为状态作结点; 对于形如U∷=a的每一个规则,引一条从开始状态s到状态U的弧,弧上标记为a; 对于形如U∷=wa的每一个规则,引一条从状态w到状态U的弧,弧上标记为a; 以识别符号为终止状态。 例:设有正规文法G[Z]: Z∷= U0|V1 U∷=Z1|1 V∷=Z0|0 (描述的语言为L(G)={01,10} ) 则状态转换图如下: 例:标识符的转换图: 从开始状态出发到某一终止状态结点为止,所经过的路径上的符
文档评论(0)