第3章-词法分析-编译原理-陈火旺优秀PPT.ppt
《第3章-词法分析-编译原理-陈火旺优秀PPT.ppt》由会员分享,可在线阅读,更多相关《第3章-词法分析-编译原理-陈火旺优秀PPT.ppt(107页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1v内容:内容:v 状态转换图、正规式和有限自动机、词法分析器的状态转换图、正规式和有限自动机、词法分析器的自动生成自动生成v驾驭驾驭:v 正规式、状态转换图,正规式、状态转换图,DFN的概念、的概念、NFA的概念,的概念,将将NFA转转 v 换为换为DFA、DFA的化简、正规式与有限自动机间的的化简、正规式与有限自动机间的转换。转换。v理解理解:v 正规文法与有穷自动机间的转换正规文法与有穷自动机间的转换v 词法分析器的自动产生工具词法分析器的自动产生工具LEX v v 第第3章章 词法分析词法分析教学要求教学要求2本章在编译程序中的地位本章在编译程序中的地位表表格格管管理理词法分析器词法分
2、析器语法分析器语法分析器语义分析与中间代码产生语义分析与中间代码产生优化器优化器目标代码生成器目标代码生成器源程序源程序单词符号单词符号语法单位语法单位中间代码中间代码中间代码中间代码目标代码目标代码出出错错处处理理3v执行词法分析的程序称为又称为词法分析器执行词法分析的程序称为又称为词法分析器或扫描器或扫描器.v词法分析的任务:从左至右逐个地扫描源程词法分析的任务:从左至右逐个地扫描源程序的字符串序的字符串,依据词法规则识别出一个个正依据词法规则识别出一个个正确的单词,并转换为相应的二元式形式,交确的单词,并转换为相应的二元式形式,交给语法分析运用。给语法分析运用。v把作为字符串的源程序改造
3、成单词符号串的把作为字符串的源程序改造成单词符号串的词法分析是编译的基础。词法分析是编译的基础。3.1 设计设计词法分析器词法分析器时应考虑的几个问题时应考虑的几个问题43.1.1 词法分析阶段的必要性词法分析阶段的必要性 v词法分析的工作纳入整个语法分析中一揽子地进行,原则上是词法分析的工作纳入整个语法分析中一揽子地进行,原则上是可行的。可行的。v在设计一个编译程序时,通常是把对源程序的结构分析分为词在设计一个编译程序时,通常是把对源程序的结构分析分为词法分析和语法分析两个相对独立的阶段来完成。法分析和语法分析两个相对独立的阶段来完成。v第一,描述单词的结构比描述源程序的其它语法结构要简洁得
4、第一,描述单词的结构比描述源程序的其它语法结构要简洁得多,仅运用多,仅运用3型文法也就基本够用了。型文法也就基本够用了。v其次,由于把词法分析和语法分析分开,可使编译程序各部分其次,由于把词法分析和语法分析分开,可使编译程序各部分的功能更为单一,整个编译程序的结构也更加清晰,从而有利的功能更为单一,整个编译程序的结构也更加清晰,从而有利于编译程序的编写和调整。于编译程序的编写和调整。v上述词法分析和语法分析两个阶段的划分,仅仅是对整个编译上述词法分析和语法分析两个阶段的划分,仅仅是对整个编译程序的逻辑功能而言,而不确定指的是编译程序的执行流程。程序的逻辑功能而言,而不确定指的是编译程序的执行流
5、程。53.1.2 词法分析器的输出形式词法分析器的输出形式v词法分析器输出的单词常常表示为二元式形式词法分析器输出的单词常常表示为二元式形式 v (单词种别单词种别,单词符号的属性值单词符号的属性值)v单词种别供应应语法分析程序运用;单词种别供应应语法分析程序运用;v单词符号的属性值供应应语义分析程序运用。单词符号的属性值供应应语义分析程序运用。v具体的分类设计方法以便利语法分析程序运用为原具体的分类设计方法以便利语法分析程序运用为原则。则。63.1.2 词法分析器的输出形式词法分析器的输出形式v程序语言的单词符号一般分为五种:程序语言的单词符号一般分为五种:关键字关键字(保留字或基本字保留字
6、或基本字):如:如 if,then,else,while,doif,then,else,while,do等等 标识符标识符:用来表示各种名字,如:用来表示各种名字,如 x1x1常量常量:如:如 256256,3.143.14,true,true,abcabc 运算符运算符:如:如 、*、/等等等等分界符分界符:如:如 逗号,分号,冒号等逗号,分号,冒号等73.1.2 词法分析器的输出形式词法分析器的输出形式v单词种别单词种别:v 一个语言的单词符号如何分类、分为几一个语言的单词符号如何分类、分为几类、如何编码主要取决于处理上的便利。通常,每类、如何编码主要取决于处理上的便利。通常,每种单词对应
7、一个整数码。种单词对应一个整数码。v 留意:保留字、运算符和界符的个数确定,留意:保留字、运算符和界符的个数确定,v 标识符和常数的个数不确定。标识符和常数的个数不确定。v 保留字:可全体视为一种,也可一字一种;保留字:可全体视为一种,也可一字一种;v 标识符:统归为一种;标识符:统归为一种;v 常数:统归为一种常数:统归为一种,或按整、实、布尔等再分;或按整、实、布尔等再分;v 运算符和界符:一符一种,或统归为一种。运算符和界符:一符一种,或统归为一种。83.1.2 词法分析器的输出形式词法分析器的输出形式v单词符号的属性值单词符号的属性值v 单词符号的属性是指单词符号的特征值单词符号的属性
8、是指单词符号的特征值。v假如一个种别只含有一个单词符号,那么对于这个单假如一个种别只含有一个单词符号,那么对于这个单词符号,种别编码就完全代表它自身了,因而不须要词符号,种别编码就完全代表它自身了,因而不须要属性值。属性值。v若一个种别含有多个单词符号,那么,对于它的每个若一个种别含有多个单词符号,那么,对于它的每个单词符号,除了给出种别编码之外,还应给出有关单单词符号,除了给出种别编码之外,还应给出有关单词符号的属性值。词符号的属性值。93.1.2 词法分析器的输出形式词法分析器的输出形式v单词符号的属性值单词符号的属性值标识符和常数标识符和常数 标识符的标识符的内部码内部码(如如ASCII
9、码等等码等等)和和常数本身的值常数本身的值(二进制,逻辑值等二进制,逻辑值等)来表示。来表示。标识符的标识符的符号表入口地址符号表入口地址作为其单词符号的属性值作为其单词符号的属性值,常量在其常量在其常量表中的入口地址常量表中的入口地址作为其单词符号的属性作为其单词符号的属性值。值。每个基本字占一个单词种别,单词符号的属性值缺省每个基本字占一个单词种别,单词符号的属性值缺省。对于界符,运算符通常一个符号一个种别,单词符号的对于界符,运算符通常一个符号一个种别,单词符号的属性值缺省属性值缺省例例:参见参见P42.P42.表表3.1 3.1 单词符号及种别编码单词符号及种别编码103.1.3 词法
10、分析器作为独立子程序词法分析器作为独立子程序v词法分析可接受如下两种处理结构:词法分析可接受如下两种处理结构:v把词法分析程序作为主程序。将词法分析作为独立把词法分析程序作为主程序。将词法分析作为独立的一遍来完成。的一遍来完成。v把词法分析程序作为语法分析程序调用的子程序。把词法分析程序作为语法分析程序调用的子程序。v每当语法分析器须要一个单词符号时就调用这个子每当语法分析器须要一个单词符号时就调用这个子程序。程序。v每一次调用,词法分析器从源程序字符串中识别出每一次调用,词法分析器从源程序字符串中识别出一个单词符号,并把它的内部表示二元组交给语法一个单词符号,并把它的内部表示二元组交给语法分
11、析器处理。分析器处理。113.1.4 源程序的输入、预处理及源程序的输入、预处理及超前搜寻超前搜寻词法分析器工作的第一步是输入源程序文本。词法分析器工作的第一步是输入源程序文本。输输入入串串一一般般放放在在一一个个输输入入缓缓冲冲区区中中。词词法法分分析析器器的的工工作作可可以以干干脆脆在在输输入入缓缓冲冲区区中中进进行行。但但在在很很多多状状况况下下,可可以以先先预预处处理理输输入入串串,识识别工作将更便利。(参见别工作将更便利。(参见P40 图图3.1)123.1.4 源程序的输入、预处理及源程序的输入、预处理及超前搜寻超前搜寻v预处理的缘由预处理的缘由v 源程序中包含回车源程序中包含回车
12、,换行换行,多余空白符多余空白符,注释行等注释行等编辑字符编辑字符,它们对程序逻辑功能无任何影响,它们对程序逻辑功能无任何影响,在词在词法分析之前法分析之前,首先要剔除掉这些符号首先要剔除掉这些符号,使得词法分析使得词法分析更为简洁。更为简洁。v 一行语句结束应配上一个特殊字符说明。一行语句结束应配上一个特殊字符说明。v 有些语言要识别标号区,区分标号语句,找有些语言要识别标号区,区分标号语句,找出续行符连接成完整语句等。出续行符连接成完整语句等。v 输出源程序清单以便复核。输出源程序清单以便复核。v 预处理子程序任务预处理子程序任务v 从输入缓冲区中读取源程序,预处理后送入从输入缓冲区中读取
13、源程序,预处理后送入扫描缓冲区。此时,扫描缓冲区的字符都是有效字扫描缓冲区。此时,扫描缓冲区的字符都是有效字符。符。v 词法分析程序这时可以再对扫描缓冲区进行词法分析程序这时可以再对扫描缓冲区进行扫描。扫描。133.1.4 源程序的输入、预处理及源程序的输入、预处理及超前搜寻超前搜寻v超前搜寻超前搜寻v 对于有些语言,关键字不爱护,关键字与用户对于有些语言,关键字不爱护,关键字与用户自定义标识符间没有界符,要在上下文环境中识别自定义标识符间没有界符,要在上下文环境中识别单词,这时须要超前搜寻方法来识别关键字。单词,这时须要超前搜寻方法来识别关键字。v 例如:例如:FORTRAN语言:语言:v
14、1.DO10K=1,50 v 2.DO10K=1.50v扫描缓冲区的结构扫描缓冲区的结构 (自学自学)16词法分析程序设计词法分析程序设计v 设计方法:设计方法:写出该语言的词法规则;写出该语言的词法规则;把词法规则转换为相应的把词法规则转换为相应的状态转换图状态转换图;把各转换图的初态连在一起,构成识别该把各转换图的初态连在一起,构成识别该 语言的语言的自动机自动机;(4)(4)设计扫描器设计扫描器 173.2 正规文法和有限自动机正规文法和有限自动机v 这节介绍这节介绍词法规则词法规则的形式表示的形式表示(正规式正规式),从从正规式正规式向有限自动机的转化向有限自动机的转化.正规式正规式有
15、限自动机有限自动机词法分析器词法分析器控制程序控制程序自动生成器自动生成器转化转化合成合成183.2.1 正规文法、正规集与正规式正规文法、正规集与正规式v正规文法:正规文法:是是chomsky3型文法。型文法。例如:标识符这种单词可以用下面的规则描述例如:标识符这种单词可以用下面的规则描述|(|)表示随意字母,表示随意字母,表示随意数字表示随意数字注:正规文法描述是注:正规文法描述是正规集正规集的文法,可用于描述程序设计的文法,可用于描述程序设计语言的语法部分语言的语法部分。19v 对于一个正规文法的语言提炼出一个简洁的公式,用这个式对于一个正规文法的语言提炼出一个简洁的公式,用这个式子来对
16、它进行子来对它进行形式化的表示形式化的表示,这个式子叫,这个式子叫正规式正规式。v正规式:正规式:也称也称正则表达式正则表达式,是说明是说明单词的模式单词的模式的一种重要的的一种重要的表示法(记号);是定义正规集的数学工具;用来描述单词表示法(记号);是定义正规集的数学工具;用来描述单词符号。符号。3.2.1 正规文法、正规式与正规集正规文法、正规式与正规集注:正规集是集合,可有穷也可无穷。注:正规集是集合,可有穷也可无穷。可通过正规式来形式化表示。可通过正规式来形式化表示。v 正规集:正规集:由正规文法产生的语言所构成的集合。由正规文法产生的语言所构成的集合。203.2.1 正规文法、正规式
17、与正规集正规文法、正规式与正规集下面以标识符为例说明下面以标识符为例说明正规式正规式与与正规集正规集:标识符标识符标识符标识符是以字母开头的字母数字串。是以字母开头的字母数字串。若用若用L L表示字母表示字母,用用D D表示数字表示数字,则标识符可表示为则标识符可表示为:L(L|D):L(L|D)*其中并置表示两者的其中并置表示两者的连接连接,|,|表示两者选一表示两者选一,*,*表示零次或多次引用。表示零次或多次引用。L(L|D)L(L|D)*为为标识符的正规式标识符的正规式,该正规式表示的集合为该正规式表示的集合为标识符的正规集标识符的正规集。21v下面是正规式和它所定义的正规集的递归定义
18、。下面是正规式和它所定义的正规集的递归定义。v 1),是是 上的正规式上的正规式,所表示的正规集为所表示的正规集为 ,;v 2)若若 a,则则 a 为正规式为正规式,所表示的正规集为所表示的正规集为 a;v 3)设设U,V 为为 上的正规式上的正规式,所表示的正规集为所表示的正规集为 L(U),L(V);v 则则 U|V为为 上的正规式上的正规式,所表示的正规集为所表示的正规集为 L(U)L(V);v UV为为 上的正规式上的正规式,所表示的正规集为所表示的正规集为 L(U)L(V);v V*为为 上的正规式上的正规式,所表示的正规集为所表示的正规集为 (L(V)*;v 4)仅当有限次运用上述
19、三步骤而定义的表达式仅当有限次运用上述三步骤而定义的表达式,才是才是 上的正规式上的正规式,而这些正规式所表示的字集才是而这些正规式所表示的字集才是上的正规集。上的正规集。3.2.1 正规文法、正规式与正规集正规文法、正规式与正规集或运算或运算连接积连接积22说明:说明:1上的一个字指的是由上的一个字指的是由中字符构成的一个有穷序列中字符构成的一个有穷序列;不包含任何字符的序列称为空字(不包含任何字符的序列称为空字()。)。*表示表示上全部字的全体上全部字的全体,包括空字(包括空字()。)。例如例如,若若=a,b 则则*=,a,b,aa,ab,ba,bb,aaa,2 表示不含任何元素的空集表示
20、不含任何元素的空集。留意留意、和和的区分:的区分:表示不包含任何字符的序列表示不包含任何字符的序列,它是正规集中的一个元素;它是正规集中的一个元素;表示不含任何字的集合表示不含任何字的集合,它是一个空的正规集;它是一个空的正规集;表示由空字组成的集合。表示由空字组成的集合。3.2.1 正规文法、正规式与正规集正规文法、正规式与正规集233 3 运用括号可变更运算符的运算次序。运用括号可变更运算符的运算次序。若若规规定定*优优先先于于,优优先先于于|,|,则则在在不不混混淆淆状状况况下下,可可省省 去括号。去括号。4 R4 R自身的自身的n n次连接记为次连接记为 Rn=RRR Rn=RRR5
21、R0=,5 R0=,R*=R0R1R2R3,R*R*=R0R1R2R3,R*为为R R的闭包的闭包 R+=RR*,R+=RR*,称称R+R+是是R R的正闭包。的正闭包。闭闭包包R*R*中中的的每每个个字字都都是是由由R R中中的的字字经经过过有有限限次次连连接接而而成成的。的。6 6 对于正规式对于正规式R R和和S,S,若它们表示的正规集若它们表示的正规集L(R)=L(S),L(R)=L(S),则称则称R R和和S S等价等价,记为记为R=SR=S。3.2.1 正规文法、正规式与正规集正规文法、正规式与正规集24v 正规式具有下列性质:正规式具有下列性质:v (1)交换律:交换律:R|S=
22、S|R v (2)结合律:结合律:R|(S|T)=(R|S)|T,R(ST)=(RS)T v (3)安排律:安排律:R(S|T)=RS|RT,(R|S)T=RT|STv (4)同一律:同一律:R=R=R3.2.1 正规文法、正规式与正规集正规文法、正规式与正规集例例3.1=a,b,R=a(a3.1=a,b,R=a(a|b)b)*是是上正规式上正规式,试求试求R R表示的正规集。表示的正规集。解解:L(R)=L(a(a:L(R)=L(a(a|b)b)*)=L(a)L(a)=L(a)L(a|b)b)*)=L(a)(L(a =L(a)(L(a|b)b)*=L(a)(L(a)L(b)=L(a)(L(a
23、)L(b)*=a(ab)=a(ab)*=aa,b=aa,b*=a,a,b,aa,ab,ba,bb,aaa,=a,a,b,aa,ab,ba,bb,aaa,=a,aa,ab,aaa,aab,aba,abb,aaaa,=a,aa,ab,aaa,aab,aba,abb,aaaa,上全部以上全部以a为首的字为首的字25 例例3.2 3.2 推断下述正规式之间是否等价:推断下述正规式之间是否等价:(1)b(ab)*(1)b(ab)*与与(ba)*b (2)(ab)*(ba)*b (2)(ab)*与与a*b*a*b*解解:(1)b(ab)*:(1)b(ab)*对应的正规集是对应的正规集是b b后面出现随意多
24、个后面出现随意多个abab对对 L(b(ab)*)=b,bab,babab,L(b(ab)*)=b,bab,babab,(ba)*b (ba)*b对应的正规集是对应的正规集是b b前面可出现随意个前面可出现随意个baba对对L(ba)*b)=b,bab,babab,L(ba)*b)=b,bab,babab,因此两者等价。因此两者等价。正规式正规式b(ab)*b(ab)*及及(ba)*b(ba)*b都描述以都描述以b b开头且其后跟以零个或随意开头且其后跟以零个或随意多个多个abab所组成的字符串等。故我们说两个正规式等价,所组成的字符串等。故我们说两个正规式等价,(2)(ab)*(2)(ab)
25、*对应的正规集以随意个对应的正规集以随意个abab对出现,即对出现,即 ababab,ababab,而而a*b*a*b*对应的正规集则是随意个对应的正规集则是随意个a a后接随意个后接随意个b,b,即即aabb,aabb,因此两者不等价。因此两者不等价。26例例3.3:3.3:设设 =a,ba,b,则则正规式和正规集正规式和正规集:a a b b (a(a b)(ab)(a b)b)a a*(a(a b)b)*aa abab*a,ba,b aa,ab,ba,bbaa,ab,ba,bb ,a,aa,aaa,aaaa,a,aa,aaa,aaaa,=a=an n|n0|n0 ,a,b,aa,ab,b
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 词法 分析 编译 原理 陈火旺 优秀 PPT
限制150内