编译原理2词法解析优秀PPT.ppt
《编译原理2词法解析优秀PPT.ppt》由会员分享,可在线阅读,更多相关《编译原理2词法解析优秀PPT.ppt(42页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1内容提要内容提要:状态转换图状态转换图正规式与有限制动机正规式与有限制动机词法分析器的自动生成词法分析器的自动生成词法分析器词法分析器源程序源程序单词序列单词序列第一节第一节 状态转换图状态转换图一一 单词分类及表示单词分类及表示 编译中编译中,把高级语言的单词分为五类把高级语言的单词分为五类:标识符标识符,基本字基本字,常数常数,运算符运算符,界符界符 基本字基本字,运算符运算符,界符都是有限可枚举的界符都是有限可枚举的;而标识而标识符符,常数可认为是无限的常数可认为是无限的.简洁起见简洁起见,单词可表示为如下二元组单词可表示为如下二元组:(单词分类号单词分类号,单词自身值单词自身值);或
2、者为或者为:(单词种别码单词种别码,单词自身值单词自身值);标识符标识符,常数常数 各为一个种别码各为一个种别码,而由于基本字而由于基本字,运算符运算符,界符的有限性界符的有限性,可以设计为一字一个种别码可以设计为一字一个种别码.2例如例如:单词单词 单词种别码单词种别码分类号分类号 标识符标识符1 1常数常数 2 2if 3 3then4 3end90 3,91 4;92 4=151 5+152 5保留字保留字界符界符运算符运算符3二二 词法分析器的设计词法分析器的设计1 源程序的预处理子程序源程序的预处理子程序 源程序中源程序中,存在很多编辑用的符号存在很多编辑用的符号,它们对程序逻它们对
3、程序逻辑功能无任何影响辑功能无任何影响.例如例如:回车回车,换行换行,多余空白符多余空白符,注注释行等释行等.在词法分析之前在词法分析之前,首先要剔除掉这些符号首先要剔除掉这些符号,使使得词法分析更为简洁得词法分析更为简洁.源程序源程序输入缓冲区输入缓冲区预处理子程序预处理子程序扫描缓冲区扫描缓冲区2扫描缓冲区扫描缓冲区1 缓冲区分为两部分缓冲区分为两部分,每每个长度为个长度为256字节字节,这样这样单词的总长度可达到单词的总长度可达到256字节字节.预处理子程序预处理子程序把处理好的字符串轮番把处理好的字符串轮番放入两个缓冲区中放入两个缓冲区中,供供词法分析程序运用词法分析程序运用.42 词
4、法分析程序词法分析程序 词法分析程序又称为词法分析器或扫描器词法分析程序又称为词法分析器或扫描器.可以单独为一个可以单独为一个程序程序;也可以作为整个编译程序的一个子程序也可以作为整个编译程序的一个子程序,当须要一个单词当须要一个单词时时,就调用词法分析子程序返回一个单词就调用词法分析子程序返回一个单词.这里这里,作为子程序介绍作为子程序介绍.词法分析器的结构词法分析器的结构:源程序源程序输入缓冲区输入缓冲区预处理子程序预处理子程序扫描缓冲区扫描缓冲区2扫描缓冲区扫描缓冲区1词法分析子程序词法分析子程序调用调用返回一单词返回一单词数据数据53 词法规则的表示词法规则的表示-状态转换图状态转换图
5、定义定义:状态转换图是一有向图状态转换图是一有向图,由有限个结点及有向边连接而成由有限个结点及有向边连接而成;每个结点称为状态每个结点称为状态;状态图有一个初态状态图有一个初态,多个终态多个终态;每条边上每条边上 有相应的字符有相应的字符.状态转换图用于表示单词结构状态转换图用于表示单词结构,从状态转换图的初态到终态从状态转换图的初态到终态间间,每条路径上字符的连接每条路径上字符的连接,就构成了该状态图的合法单词就构成了该状态图的合法单词.例如例如:012初态初态终态终态字母字母字母字母数字数字其它其它*1标识符的状态图表示标识符的状态图表示:星号表示单词尾部多跟星号表示单词尾部多跟一个字符一
6、个字符,应当去掉应当去掉.6012初态初态终态终态数字数字数字数字其它其它*2整数的状态图表示整数的状态图表示:016初态初态终态终态数字数字数字数字其它其它*3实数的状态图表示实数的状态图表示:23456数字数字数字数字 数字数字E+或或 数字数字E其它其它数字数字74 单词的识别单词的识别 状态图即可以表示单词规则状态图即可以表示单词规则,同时也可以用于识别单词同时也可以用于识别单词.设有一字符串设有一字符串S=s1s2.sn,若状态图中存在一初态到终态的若状态图中存在一初态到终态的路径路径,且路径上字符的连接为且路径上字符的连接为:s1s2.sn,称称 S 可被状态图识别可被状态图识别.
7、例如例如:S=var1012初态初态终态终态var1其它其它*保留字由于满足标识符定义保留字由于满足标识符定义,因此可以跟标识符用同样的状因此可以跟标识符用同样的状态图表示与识别态图表示与识别,只需增加一个保留字表只需增加一个保留字表,当识别出一个标识符时当识别出一个标识符时,通过查保留字表来区分保留字及一般标识符通过查保留字表来区分保留字及一般标识符.因此因此 var1 是一个合法的标识符是一个合法的标识符.85 一个简洁示例一个简洁示例 构造一个简洁语言全部单词的状态转换图构造一个简洁语言全部单词的状态转换图.该语言的单词种类如下表所示该语言的单词种类如下表所示:单词符号单词符号 种别码种
8、别码 助记符助记符 内码值内码值 DIMIFDOSTOPEND标识符标识符正常数正常数=+*,()1234567891011121314$DIM$IF$DO$STOP$END$ID$INT$ASSIGN$PLUS$STAR$POWER$COMMA$LPAR$RPAR(1,)(2,)(3,)(4,)(5,)(6,串值串值)(7,数值数值)(8,)(9,)(10,)(11,)(12,)(13,)(14,)90 1 2初态初态终态终态字母字母字母字母数字数字其它其它*空白空白 3 4 终态终态数字数字数字数字非数字非数字*5=6+7*9 8*非非*10,11(12)13其它其它106 状态转换图的程
9、序实现状态转换图的程序实现 为便于程序实现为便于程序实现,假设每个单词间都有界符或运算符或空格隔假设每个单词间都有界符或运算符或空格隔开开,并引入下面的全局变量及子程序并引入下面的全局变量及子程序:1)CHAR 字符变量字符变量2)TOKEN 单词字符串单词字符串3)GETCHAR 读一个字符到读一个字符到 CHAR 中中4)GETBC 读一个非空白字符到读一个非空白字符到CHAR 中中5)CONCAT 把把CHAR 中字符连接到中字符连接到TOKEN 之后之后6)LETTER 推断推断CHAR 中字符是否为字母中字符是否为字母7)DIGIT 推断推断CHAR 中字符是否为数字中字符是否为数字
10、8)RESERVE 用用TOKEN中的字符串查找保留字表中的字符串查找保留字表,并返回保留并返回保留 字种别码字种别码,若返回零若返回零,则非保留字则非保留字9)RETRACT 把把CHAR 中字符回送到缓冲区中字符回送到缓冲区11 下面分析状态图的结构特点下面分析状态图的结构特点.每个状态图都由三种结构构成每个状态图都由三种结构构成:分支结构分支结构 循环结构循环结构 终结点终结点1分支结构程序设计分支结构程序设计 i i2i1 inc1c2cnstate i:GETCHAR;CASE CHAR OF c1:CONCAT;state i1:.c2:CONCAT;state i2:.cn:CO
11、NCAT;state in:.ELSE ERROR END;122循环结构程序设计循环结构程序设计 i j C其它其它state i:GETCHAR;WHILE CHAR=C DO CONCAT;GETCHAR;RETRACT;state j:.3终结点程序设计终结点程序设计 一般对应一条返回语句一般对应一条返回语句:return(c,val);c 为种别码为种别码,val 为单词值为单词值.带带*号的终结点号的终结点,必需用必需用RETRACT 退还多余字符退还多余字符 下面程序为简洁示例语言的实现下面程序为简洁示例语言的实现:13TYPE WORDTYPE=RECORD C:INTEGER
12、;VAL:CHAR;END;FUNCTION RETURN_WORD():WORDTYPE;STATE0:TOKEN:=;GETCHAR;GETBC;CASE CHAR OF A.Z:CONCAT;STATE1:GETCHAR;WHILE (LETTER OR DIGIT)DO CONCAT;GETCHAR;RETRACT;STATE2:C:=RESERVE;IF C=0 THEN RETURN($ID,TOKEN)ELSE RETURN(C,_)14 0.9:CONCAT;STATE3:GETCHAR;WHILE (DIGIT)DO CONCAT;GETCHAR;RETRACT;STATE4
13、:RETURN($INT,TOKEN);=:STATE5:RETURN($ASSIGN,_);+:STATE6:RETURN($PLUS,_);*:STATE7:GETCHAR;STATE9:IF CHAR=*THEN RETURN($POWER,_);STATE8:RETRACT;RETURN($STAR,_);,:STATE10:RETURN($COMMA,_);(:STATE11:RETURN($LPAR,_);):STATE12:RETURN($RPAR,_);ELSE STATE13:ERROR1516 这节介绍词法规则的这节介绍词法规则的形式表示形式表示(正规式正规式),从正规式向
14、有限自动从正规式向有限自动机的转化机的转化.正规式正规式有限自动机有限自动机词法分析器词法分析器限制程序限制程序自动生成器自动生成器转化转化合成合成其次节 正规式与有限自动机一一 基本概念基本概念 定义定义 1 字与字集字与字集 假设假设:是一有穷字符集是一有穷字符集,它的每个元素称为一个字符它的每个元素称为一个字符;字字-上的一个字上的一个字,是由是由 中的字符所构成的一个有穷序列中的字符所构成的一个有穷序列;空串空串-不包含任何元素的序列称为空串不包含任何元素的序列称为空串,记为记为;闭包闭包*-上全部可能的字的全体上全部可能的字的全体;空字集空字集-不含任何字的集合称为空字集不含任何字的
15、集合称为空字集;记为记为=;例如例如:=a,b 则则 *=,a,b,aa,ab,ba,bb.留意留意:,三者间的关系三者间的关系定义定义 2 连接运算连接运算 设设 U,V *则则 UV=|U,V 一般一般 UVVU Vn =VV.V 称为称为 V 的的 n 次积次积17例如例如:设设 U=a,aa,V=b 则则UV=ab,aab VU=ba,baa定义定义 3 V的闭包的闭包 设设 V 为字集为字集,且且 V0=令令 V*=V0V1 V2.V+=V*-称称V*为为V的闭包的闭包 称称V+为为V的正则闭包的正则闭包 留意留意:*与与 V*的区分的区分.1819示例示例:令令=A.Z,0.9 则
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译 原理 词法 解析 优秀 PPT
限制150内