第3章词法分析PPT讲稿.ppt
《第3章词法分析PPT讲稿.ppt》由会员分享,可在线阅读,更多相关《第3章词法分析PPT讲稿.ppt(118页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第3章词法分析第1页,共118页,编辑于2022年,星期一第第3 3章词法分析章词法分析1.1.本章介绍编译第一个阶段词法分析的本章介绍编译第一个阶段词法分析的设计原理和设计方法设计原理和设计方法,要求明确此阶段的要求明确此阶段的任务任务。2.2.理解通常的单词理解通常的单词分类和构词规则分类和构词规则。3.3.会使用单词的会使用单词的描述和识别描述和识别机制。机制。4.4.要求掌握要求掌握正规文法、状态图、正规文法、状态图、DFADFA、NFANFA、正规式和正规、正规式和正规集集的基本概念和它们之间的关系。的基本概念和它们之间的关系。5.5.掌握词法分析程序的掌握词法分析程序的手工手工实现
2、方法。实现方法。6.6.掌握词法分析程序的掌握词法分析程序的自动自动构造原理。构造原理。教学目标教学目标第2页,共118页,编辑于2022年,星期一3.1 3.1 词法分析的任务词法分析的任务3.2 3.2 词法分析程序的输出形式词法分析程序的输出形式3.3 3.3 词法分析程序的设计与实现词法分析程序的设计与实现3.4 3.4 正规式与有穷自动机正规式与有穷自动机3.5 3.5 词法分析程序的自动生成工具词法分析程序的自动生成工具LEXLEX3.6 PL/03.6 PL/0编译程序的词法分析编译程序的词法分析教学内容教学内容第3页,共118页,编辑于2022年,星期一(1 1)分析和识别单词
3、及属性,分析和识别单词及属性,包括识别包括识别语言的语言的关键字关键字、标识符、常数、运算符等、标识符、常数、运算符等;(2 2)跳过各种分隔符,如空格,回车,制表符等;跳过各种分隔符,如空格,回车,制表符等;(3 3)删除注释;)删除注释;(4 4)进行词法检查,报告所发现的错误;)进行词法检查,报告所发现的错误;(5 5)建立符号表。)建立符号表。3.13.1词法分析的任务词法分析的任务第4页,共118页,编辑于2022年,星期一main()/*ADD*/int x=10,y=20,sum;sum=x+y;main、(、)、int、x、=、10、,、y、=、20、,、sum、;、sum、=
4、、x、+、y、;、词法分析词法分析 第5页,共118页,编辑于2022年,星期一实现方案:实现方案:基本上有两种1.词法分析单独作为一遍2.词法分析程序作为单独的子程序S.P.(字符串)词法分析词法分析S.P.(符号串)语法分析语法分析第一遍第一遍第二遍第二遍单词串单词串优点优点:结构清晰、各遍功能单一结构清晰、各遍功能单一缺点:效率低缺点:效率低S.P.(字符串)词法分词法分析程序析程序语法分语法分析程序析程序取单词取单词单词单词第6页,共118页,编辑于2022年,星期一单词的种类单词的种类(1 1)关键)关键字:字:if、for、while(2 2)标识符:标识符:(3 3)常数:常数:
5、(4 4)运算符:运算符:+、-、*(5 5)分界符:)分界符:,、;、(、)3.23.2词法分析程序的输出形式词法分析程序的输出形式第7页,共118页,编辑于2022年,星期一词法分析程序的输出形式词法分析程序的输出形式-二元式二元式单词类别单词类别 单词的属性值单词的属性值单词类别可以用整数编码表示单词类别可以用整数编码表示:一类一种或一字一种一类一种或一字一种单词类别单词类别关键字关键字标识符标识符常数常数运算符运算符分界符分界符编码编码1 12 23 34 45 5第8页,共118页,编辑于2022年,星期一表3.1 int x=10,y=20,sum;词法分析的结果单词类别单词类别单
6、词的属性值单词的属性值1int2指向指向x的符号表入口指针的符号表入口指针4=3105,2指向指向y的符号表入口指针的符号表入口指针4=3205,2指向指向sum的符号表入口指针的符号表入口指针5;表表3.1intx=10,y=20,sum;词法分析的结果词法分析的结果第9页,共118页,编辑于2022年,星期一3.33.3词法分析程序的设计与实现词法分析程序的设计与实现词法规则词法规则状态图状态图词法分析程序词法分析程序第10页,共118页,编辑于2022年,星期一结点结点代表状态,用圆圈表示,为非终结符代表状态,用圆圈表示,为非终结符有向弧有向弧表示状态转移表示状态转移弧上的标记弧上的标记
7、表示在射出弧的结点状态下可能出现的输入字符,表示在射出弧的结点状态下可能出现的输入字符,为终结符为终结符1.状态图:状态图:为识别单词而专门设计的有向图,为识别单词而专门设计的有向图,是设计词法分析程序的一种好途径。是设计词法分析程序的一种好途径。SUVZ111000一张状态图包含有穷个状态,一张状态图包含有穷个状态,只能有一个只能有一个初态初态,至少要有一,至少要有一个个终态终态(用双圈表示)(用双圈表示)3.3.1 3.3.1 正规文法及其状态图正规文法及其状态图第11页,共118页,编辑于2022年,星期一【例例3.1】某语言的标识符可使用以下正规文法某语言的标识符可使用以下正规文法GS
8、来定义:来定义:SlAA|lA|dAla,b,z,d1,2,9试构造此文法的状态图。试构造此文法的状态图。SAll|d状态图可识别单词状态图可识别单词第12页,共118页,编辑于2022年,星期一2.由正规文法构造状态图由正规文法构造状态图(1)对于右线性文法)对于右线性文法步骤步骤1增加结点增加结点Z为终态;为终态;步骤步骤2将每个非终结符号设置为一个对应的状态;将每个非终结符号设置为一个对应的状态;步骤步骤3对于对于Aa,引一条从,引一条从A到到Z的弧,弧上标记为的弧,弧上标记为a;而对于而对于AaB,引一条从,引一条从A到到B的弧,弧上标记为的弧,弧上标记为a。SlAA|lA|dAl|d
9、AZSlAZll|d第13页,共118页,编辑于2022年,星期一(2)对于左线性文法)对于左线性文法步骤步骤1增加结点增加结点S为初态;为初态;步骤步骤2将每个非终结符号设置为一个对应的状态;将每个非终结符号设置为一个对应的状态;步步骤骤3对对于于Aa,引引一一条条从从S到到A的的弧弧,弧弧上上标标记记为为a;而而对对于于ABa,引一条从,引一条从B到到A的弧,弧上标记为的弧,弧上标记为a。Al|Al|Adl|dASlSlAA|lA|dA第14页,共118页,编辑于2022年,星期一词法规则词法规则状态图状态图词法分析程序词法分析程序3.3.2 3.3.2 词法分析程序的实现词法分析程序的实
10、现(1 1)根据词法规则写出正规文法;根据词法规则写出正规文法;(2 2)将正规文法转换成状态图;将正规文法转换成状态图;(3 3)将状态图转换成流程图。将状态图转换成流程图。第15页,共118页,编辑于2022年,星期一 标识符标识符 关键字关键字(标识符的子集)标识符的子集)常数常数 运算符运算符 +、*、=分界符分界符 ,、;【例例3.23.2】假设某种语言的单词符号的子集有:假设某种语言的单词符号的子集有:试构造此语言子集的词法分析程序。试构造此语言子集的词法分析程序。第16页,共118页,编辑于2022年,星期一(1 1)根据词法规则写出正规文法根据词法规则写出正规文法字母字母|字母
11、字母|数字)数字)数字数字|数字数字+|*|,|;=第17页,共118页,编辑于2022年,星期一标识符标识符出口出口S1非字母数字非字母数字字母字母字母、数字字母、数字无符号整数无符号整数出口出口S2非数字非数字数字数字数字数字单字符分界符单字符分界符出口出口S3其他字符其他字符+*=,;双字符分界符双字符分界符出口出口S4其他字符其他字符5=非非=字母字母|字母字母|数字)数字)数字数字|数字数字+|*|+|*|,|;=(2 2)将正规文法转换成状态图将正规文法转换成状态图第18页,共118页,编辑于2022年,星期一合并合并 将初始状态合并为一个唯一的初态;将初始状态合并为一个唯一的初态
12、;化简调整状态冲突并对冲突状态重新编号;化简调整状态冲突并对冲突状态重新编号;如有必要,增加出错状态。如有必要,增加出错状态。第19页,共118页,编辑于2022年,星期一标识符标识符无符号整数无符号整数单界符单界符双界符双界符S1非字母数字非字母数字字母字母字母、数字字母、数字2非数字非数字数字数字数字数字3其他字符其他字符+*,()出口出口4其他字符其他字符5=非非=出错出错其他其他读字符读字符查保留字表查保留字表返回返回S合并后的状态图合并后的状态图第20页,共118页,编辑于2022年,星期一(3 3)将状态图转换成流程图,如图)将状态图转换成流程图,如图3.53.5写出词法分析程序写
13、出词法分析程序第21页,共118页,编辑于2022年,星期一3.5字母表字母表,定义在定义在 上的正规式和正规集递归定义如下上的正规式和正规集递归定义如下:1.1.和和 都是都是 上的正规式上的正规式,它们所表示的正规集分别为它们所表示的正规集分别为:和和;2.2.任何任何a a ,a,a是是 上的正规式上的正规式,它所表示的正规集为它所表示的正规集为:a;:a;3.3.假定假定U U和和V V 上的正规式上的正规式,它们所表示的正规集分别记为它们所表示的正规集分别记为L(e1)L(e1)和和L(e2),L(e2),那么那么e1|e2,e1e1|e2,e1e2e2和和e1e1*也都是也都是 上
14、的正规式上的正规式,它们所表示的它们所表示的 正规集分别为正规集分别为L(e1)L(e1)L(e2)L(e2)、L(e1)L(e1)L(e2)L(e2)和和(L(e1)(L(e1)*4.4.任何任何 上的正规式和正规集均由上的正规式和正规集均由1 1、2 2和和3 3产生。产生。3.43.4正规表达式与有穷自动机正规表达式与有穷自动机3.4.1 3.4.1 正规式与正规集正规式与正规集第22页,共118页,编辑于2022年,星期一正规式中的运算符:正规式中的运算符:|-或(选择)或(选择)-连接连接*或或-重复重复()()-括号括号运算符的优先级:运算符的优先级:先先*,后后,最后最后|在正规
15、式中可以省略在正规式中可以省略.正规式相等正规式相等这两个正规式表示的语言相等这两个正规式表示的语言相等第23页,共118页,编辑于2022年,星期一【例例3.3】设设=a,b正规式正规式正规集正规集ba*所有以所有以b为首后跟任意多个为首后跟任意多个a的符号串的符号串a(a|b)*所有以所有以a为首的符号串为首的符号串(a|b)*abb所有以所有以abb为尾的为尾的a,b符号串符号串(a|b)*(aa|bb)(a|b)*所有含有两个相继的所有含有两个相继的a或相继的或相继的b的符号串的符号串(aa|ab|ba|bb)*空串和任何长度为偶数的符号串空串和任何长度为偶数的符号串(a|b)(a|b
16、)(a|b)*任何长度大于等于任何长度大于等于2的符号串的符号串第24页,共118页,编辑于2022年,星期一【例例3.3】使用正规式来表示例使用正规式来表示例3.2中的相应单词符号。中的相应单词符号。字母字母|字母字母|数字)数字)数字数字|数字数字+|*|+|*|,|;=标识符:标识符:l(l|d)*无符号整数:无符号整数:dd*单界符:单界符:+|*|,|;双界符:双界符:=第25页,共118页,编辑于2022年,星期一设设r,s,t均是正规式,则有以下性质:均是正规式,则有以下性质:(1)交换律:)交换律:r|s=s|r(2)结合律:)结合律:r|(s|t)=(r|s)|t(rs)t=
17、r(st)(3)分配律:)分配律:(r|s)t=rt|st(4)同一律:)同一律:r=r=r第26页,共118页,编辑于2022年,星期一1.正规文法正规文法正规式正规式规则规则1 1规则规则2 2规则规则3 3文法产生式文法产生式正规式正规式AxB,ByAxB,ByAxA|yAxA|yAx,AyAx,AyA=xyA=xyA=xA=x*y yA=x|yA=x|y步骤步骤1将每条产生式改写为正规式;将每条产生式改写为正规式;步步骤骤2用用代代入入法法解解正正规规式式方方程程组组,最最后后只只剩剩下下一一个个开开始始符号定义的正规式,其中不含非终结符。符号定义的正规式,其中不含非终结符。3.4.2
18、 3.4.2 正规文法与正规式正规文法与正规式第27页,共118页,编辑于2022年,星期一【例例3.5】GS:SaA|aAdA|d规则规则1 1规则规则2 2规则规则3 3文法产生式文法产生式正规式正规式AxB,ByAxB,ByAxA|yAxA|yAx,AyAx,AyA=xyA=xyA=xA=x*y yA=x|yA=x|yS=aA|aA=d*d代入代入:S=ad*d|aad*第28页,共118页,编辑于2022年,星期一2.正规式正规式正规文法正规文法步骤步骤1构造构造Sr步骤步骤2不断利用表不断利用表3.4的规则做变换的规则做变换,直到每个产生式最多含有直到每个产生式最多含有一个终结符为止
19、一个终结符为止规则规则1 1规则规则2 2规则规则3 3文法产生式文法产生式正规式正规式AxB,ByAxB,ByAxA|yAxA|yAx,AyAx,AyA=xyA=xyA=xA=x*y yA=x|yA=x|y第29页,共118页,编辑于2022年,星期一【例例3.6】求正规式求正规式(a|b)(a|b|0|1)*对应的正规文法对应的正规文法S(a|b)(a|b|0|1)*S(a|b)AaA|bA|0A|1A|GS:SaA|bAAaA|bA|0A|1A|A(a|b|0|1)*第30页,共118页,编辑于2022年,星期一下面是用正规式表示的变量声明:下面是用正规式表示的变量声明:(int|flo
20、at)id(,id)*请请改改用用上上下下文文无无关关文文法法表表示示,也也就就是是写写一一个个上上下下文文无无关关文文法法,它和该正规式等价。它和该正规式等价。(int|float)id(,id)*D(int|float)LLid(,id)*DintL|floatLLL,id|idGD:DintL|floatLLL,id|id第31页,共118页,编辑于2022年,星期一3.4.3 3.4.3 有穷自动机有穷自动机标识符标识符无符号整数无符号整数单界符单界符双界符双界符S1非字母数字非字母数字字母字母字母、数字字母、数字2非数字非数字数字数字数字数字3其他字符其他字符+*,()出口出口4其他
21、字符其他字符5=非非=出错出错其他其他读字符读字符查保留字表查保留字表返回返回S状态图的形式化描述第32页,共118页,编辑于2022年,星期一有穷自动机是一种有穷自动机是一种数学模型数学模型,具有离散的输入与输出,系统可处,具有离散的输入与输出,系统可处于有穷状态中的任何一个于有穷状态中的任何一个它能准确地它能准确地识别正规集识别正规集,即识别正规文法所定义的语言和正规式所,即识别正规文法所定义的语言和正规式所表示的集合表示的集合引入有穷自动机这个理论,正是为引入有穷自动机这个理论,正是为词法分析程序的自动构造词法分析程序的自动构造寻找特殊的方法和工具寻找特殊的方法和工具有穷自动机分为两类:
22、有穷自动机分为两类:确定的有穷自动机确定的有穷自动机(DFADFA)(Deterministic Finite Automata)(Deterministic Finite Automata)不确定的有穷自动机不确定的有穷自动机(NFANFA)(Nondeterministic Finite Automata)(Nondeterministic Finite Automata)第33页,共118页,编辑于2022年,星期一2 2型文法型文法(不确定(不确定的下推自动机)的下推自动机)1 1型文法型文法(不确定(不确定的界限自动机)的界限自动机)0 0型文法型文法(图灵机)(图灵机)3 3型文法
23、型文法(有限(有限自动机)自动机)第34页,共118页,编辑于2022年,星期一1.确定的有穷自动机(确定的有穷自动机(DFA)M=(,Q,f,S,Z):有穷字母表,它的每个元素称为一个输入符号:有穷字母表,它的每个元素称为一个输入符号Q:有穷集,它的每个元素称为一个状态:有穷集,它的每个元素称为一个状态SK,是唯一的初态,是唯一的初态Z K是一个终态集,终态也称可接受状态或结束状态是一个终态集,终态也称可接受状态或结束状态f是转换函数,是是转换函数,是QQ上的单值映射:上的单值映射:f(q1,a)=q2第35页,共118页,编辑于2022年,星期一状态转移函数状态转移函数f可用一矩阵来表示:
24、可用一矩阵来表示:输入输入字符字符状态状态ab012132213333例如例如:M:M:(0,1,2,3,a,b,0,1,2,3,a,b,f,0,3)f(0,a)=1f(0,b)=2f(1,a)=3f(1,b)=2f(2,a)=1f(2,b)=3f(3,a)=3f(3,b)=3所谓确定的状态机,其确定性表现在状态转移函数是单值函数!字母表含有n个输入字符,那末任何一个状态结点最多有n条弧射出,而且每条弧以一个不同的输入字符标记。M=(,Q,f,S,Z)第36页,共118页,编辑于2022年,星期一一个DFA也可以用一状态转换图表示:输入 字符 状态 a b 0 1 2 1 3 2 2 1 3
25、3 3 3DFA的状态图表示:1032aabba,bba字母表含有n个输入字符,那末任何一个状态结点最多有n条弧射出,而且每条弧以一个不同的输入字符标记。第37页,共118页,编辑于2022年,星期一换言之:若存在一条初始状态到某一终止状态的路径,且这条路径上所有弧的标记符号连接成符号串,则称为DFA M(接受)识别。DFA MDFA M所接受的语言为:所接受的语言为:L(M)=|L(M)=|f(S,)=S)=Sn,n,S Sn n ZZDFA MDFA M所能接受的符号串的全体记为所能接受的符号串的全体记为L(M)L(M)若若M M的初态结点同时为终态,或者存在一条从初态到某个终态结点的的初
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 词法 分析 PPT 讲稿
限制150内