第3章词法分析.ppt
《第3章词法分析.ppt》由会员分享,可在线阅读,更多相关《第3章词法分析.ppt(105页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第3章章 词法分析词法分析学习目标学习目标:v掌掌握握:词词法法分分析析程程序序的的构构造造方方法法,正正规规式式和和正正规规文文法法到到有有穷穷自自动动机机的的转转换换,N NFAFA到到DFADFA的的转转换换、DFADFA的的化化简简v理解:理解:正规文法、正规式、正规文法、正规式、DFADFA的概念、的概念、NFANFA的概念的概念v了解:词法分析程序的自动构造工具了解:词法分析程序的自动构造工具v词法分析(词法分析(lexical analysislexical analysis)任务:逐个读入源程序字符并按照构词规则切分任务:逐个读入源程序字符并按照构词规则切分成一系列单词。成一
2、系列单词。词法分析是编译过程中的一个阶段,在语法分析词法分析是编译过程中的一个阶段,在语法分析前进行。也可和语法分析结合在一起作为一遍,前进行。也可和语法分析结合在一起作为一遍,由语法分析程序调用词法分析程序来获得当前单由语法分析程序调用词法分析程序来获得当前单词供语法分析使用。词供语法分析使用。单词单词是语言中具有独立意义的是语言中具有独立意义的最小单位最小单位,包,包括保留字、标识符、运算符、标点符号和常括保留字、标识符、运算符、标点符号和常量等。量等。3.1 3.1 词法分析程序的功能词法分析程序的功能3.1 词法分析程序的功能(续)词法分析程序的功能(续)源程序源程序词法分析程序词法分
3、析程序语法分析程序语法分析程序Tokenget token.主要任务:主要任务:读源程序,产生单词符号读源程序,产生单词符号 输入是以字符串形式的源程序输入是以字符串形式的源程序输出是以单词符号或单词符号表示的源程序输出是以单词符号或单词符号表示的源程序v词法分析程序:执行词法分析的程序。词法分析程序:执行词法分析的程序。3.2 3.2 单词符号及输出单词的形式单词符号及输出单词的形式1.语言的单词符号语言的单词符号语言的单词符号是指具有独立意义的最小语法单位。语言的单词符号是指具有独立意义的最小语法单位。程序语言的单词符号一般可分为程序语言的单词符号一般可分为5种:种:1基本字(关键字):如
4、基本字(关键字):如 else,while,if等等2标识符:用来表示常量、变量、过程等名字标识符:用来表示常量、变量、过程等名字3常数:各种类型的常数常数:各种类型的常数,如如3.14,TRUE等等4运算符:如运算符:如+,*,/5界符:如逗号,分号,括号等界符:如逗号,分号,括号等3.2 3.2 单词符号及输出单词的形式单词符号及输出单词的形式2.词法分析程序输出单词的形式词法分析程序输出单词的形式n 二元式(二元式(单词种别单词种别,单词自身的值单词自身的值)u种别表示单词种类,是语法分析需要的信息种别表示单词种类,是语法分析需要的信息u自身值是编译其他阶段需要的信息自身值是编译其他阶段
5、需要的信息种别编码种别编码(常用整数编码常用整数编码)方方法法一一:按按单单词词的的5 5大大种种类类每每种种一一个个码码,例例如如标标识识符符为为l l,常常数数为为2 2,基基本本字字为为3 3,运运算算符符为为4 4,界界符符为为5 5。方方法法二二:每每个个基基本本字字一一个个编编码码;所所有有标标识识符符为为一一个个编编码码;常常数数按按类类型型分分类类,每每类类一一个个编编码码;每每个个运算符一个编码;每个界符一个编码。运算符一个编码;每个界符一个编码。3.2 单词符号及输出单词的形式单词符号及输出单词的形式单词自身值单词自身值如如一一个个种种别别只只含含一一个个单单词词符符号号,
6、则则该该单单词词符符号种别编码就完全代表它自身的值。号种别编码就完全代表它自身的值。如如一一种种别别含含多多个个单单词词符符号号,则则对对于于每每个个单单词词符符号号,除除了了种种别别编编码码还还要要给给出出单单词词符符号号自自身身值。值。p对基本字对基本字,运算符运算符,界符一般是一符一种别。界符一般是一符一种别。p标识符自身值就是自身的字符串。标识符自身值就是自身的字符串。p常数自身值就是常数本身的二进制。常数自身值就是常数本身的二进制。v假定基本字、运算符和界符都是一符一种别。假定基本字、运算符和界符都是一符一种别。v例:例:if(a1)b=100;词法分析后输出的单词序列是词法分析后输
7、出的单词序列是:(2,)if(29,)(10,a)a(23,)(11,1的二进制的二进制)1(30,)(10,b)b(17,)=(11,100的二进制的二进制)100(26,);标识符种别编码:标识符种别编码:10 10 常数的种别编码:常数的种别编码:1111基本字种别编码:基本字种别编码:2 2赋值号种别编码:赋值号种别编码:1717大于号种别编码:大于号种别编码:2323分号的种别编码:分号的种别编码:2626左括号种别编码:左括号种别编码:2929右括号种别编码:右括号种别编码:3030例如例如 源程序源程序if i=5 then x=y;种别编码:标识符为种别编码:标识符为1,常数为
8、,常数为2,基本字为,基本字为3,运算符为运算符为4,界符为,界符为5词法分析后输出的单词序列是词法分析后输出的单词序列是:(3,if)(1,指向指向i的符号表入口的符号表入口)(4,=)(2,5)(3,then)(1,指向指向x的符号表入口的符号表入口)(4,=)(1,指向指向y的符号表入口的符号表入口)(5,;)3.3 3.3 语言单词符号的两种定义方式语言单词符号的两种定义方式n定义方式定义方式:正规文法正规文法 正规式正规式(Regular Expression)(Regular Expression)v作用作用:描述单词的构成规则描述单词的构成规则,基于这类描述工具建立基于这类描述工
9、具建立词法分析技术词法分析技术,进而实现词法分析程序的自动构造。进而实现词法分析程序的自动构造。v多数程序设计语言的多数程序设计语言的单词符号单词符号都能用正规文法或正都能用正规文法或正规式来定义。规式来定义。3.3.1 3.3.1 正规文法正规文法n正规文法回顾正规文法回顾p文法的任一产生式文法的任一产生式的形式都为的形式都为AaBAaB或或AaAa,其中其中A,BVA,BVN N,aVaVT T ABaABa或或AaAa,其中其中A A,BVBVN N ,aVaVT T p正规文法描述的是正规文法描述的是V VT T*上上的的正规语言正规语言例如例如 :用用l l表示表示a az z中的任
10、一英文字母,中的任一英文字母,d d表示表示0 09 9中任一数字中任一数字描述标识符的正规文法为描述标识符的正规文法为 llll lld dll dd 描述无符号整数的正规文法描述无符号整数的正规文法 dddd 3.3.1 正规文法(续)正规文法(续)3.3.2 正规式正规式(正则表达式正则表达式)与正规集与正规集v正规式表示一个字符串集合即正规集。正规式表示一个字符串集合即正规集。v正规集是正规语言的另一种表示法。正规集是正规语言的另一种表示法。一、一、设有字母表设有字母表=a1,a2,an,在字母表上的,在字母表上的正规式和它所表示的正规集定义如下:正规式和它所表示的正规集定义如下:1.
11、和和都是都是上的正规式,它所表示的正规集分上的正规式,它所表示的正规集分别为别为和和即空集;即空集;2.任任何何,是是上上的的正正规规式式,它它所所表表示示的的正正规集为;规集为;3.假假定定1和和2都都是是上上的的正正规规式式,他他们们所所表表示示的的正正规规集集分分别别为为(1)和和(2),那那么么,以以下下也也都是正规式和它们所表示的正规集;都是正规式和它们所表示的正规集;正规式正规式正规集正规集12(1)(2)e12(1)(2)1(1)4.仅由仅由有限次有限次使用上述三步定义的表达式才是使用上述三步定义的表达式才是上上的正规式,仅由这些正规式所表示的字符串集才是的正规式,仅由这些正规式
12、所表示的字符串集才是上的正规集。上的正规集。其中其中v“”读为读为“或或”“”读为读为“连接连接”;v“”读为读为“闭包闭包”(任意有限次的自重复连接任意有限次的自重复连接)。v 规定算符的优先顺序为规定算符的优先顺序为“”、“”、”。v 连接符连接符“”一般可省略不写。一般可省略不写。v“”、“”和和“”都是左结合的。都是左结合的。3.3.2 正规式与正规集正规式与正规集(续续)例例1 1,令,令=a=a,bb,上的正规式和相应的上的正规式和相应的正规集有正规集有正规式正规式正规集正规集a aaaa a b b a,b a,babab abab(a(a b)(ab)(a b)b)aa,ab,
13、ba,bbaa,ab,ba,bb a a ,a,aaa,aa,任意任意个个a a串串(a a b)b),a,b,aa,aba,b,aa,ab 所有由所有由a a 和和b b组成的串组成的串 3.3.2 正规式与正规集正规式与正规集(续续)v例例2 2 =l=l,dd,r=l(lr=l(l d)d)定义的正规集定义的正规集:l,ll,ld,ldd,l,ll,ld,ldd,(标识符)(标识符)v例例3 3 =d=d,.,e e,+,-,-,则则 上的正规式上的正规式 d d(.(.dddd)(e(+)(e(+-)-)dddd)表示的是无符号数的集合。表示的是无符号数的集合。其中其中d d为为0 0
14、9 9的数字。的数字。v若两个正规式若两个正规式e1e1和和e2e2所表示的正规集相同所表示的正规集相同,则说明则说明e1e1和和e2e2等价等价,写作写作e1=e2e1=e2。例如:例如:e1=(ae1=(a b)b),e2=b e2=b a a二、两二、两 个个 正正 规规 式式 等等 价价3.3.2 正规式与正规集正规式与正规集(续续)三、正规式的代数性质三、正规式的代数性质设设 A,B,C 是正规式,正规式服从的代数规律是正规式,正规式服从的代数规律1.AB=BA “或或”满足交换律满足交换律2.A(BC)=(AB)C “或或”的结合律的结合律3.(AB)C=A(BC)“连接连接”的结
15、合律的结合律4.A(BC)=ABAC5.(AB)C=ACBC分配分配律律5.A=A=A 是是“连接连接”的恒等元素的恒等元素6.A=A A|=A|A =(A|)7.(A)=A 3.3.2 正规式与正规集正规式与正规集(续续)3.3.3 正规文法和正规式间的转换正规文法和正规式间的转换正规文法与正规式都是描述正规集的工具。正规文法与正规式都是描述正规集的工具。对任意一个正规文法,存在一个定义同一语对任意一个正规文法,存在一个定义同一语言的正规式言的正规式对任意一个正规式,存在一个定义同一语言对任意一个正规式,存在一个定义同一语言的正规文法的正规文法将将正正规规文文法法中中的的每每个个非非终终结结
16、符符表表示示成成关关于于它它的的一一个个正正规规式式方方程程即即“|”用用“+”替替换换,“-”用用“=”替替换换,获得一个联立方程组。,获得一个联立方程组。依依据据求求解解规规则则和和正正规规式式代代数数性性质质,求求的的只只剩剩一一个个开始符号开始符号定义的正定义的正规规式式,且不含且不含非终结符。非终结符。正正规规文法到正文法到正规规式的转换规则式的转换规则:文法产生式文法产生式解(正解(正规规式)式)规则规则1 1AxB ByAxB By(A=xBA=xB,B=yB=y)A=xyA=xy规则规则2 2AxA|y (A=xA+y)AxA|y (A=xA+y)AAx|y (A=Ax+y)A
17、Ax|y (A=Ax+y)A=xA=x*y yA=yxA=yx*规则规则3 3Ax AyAx AyA=x|yA=x|y1.1.正规文法到正规式的转换正规文法到正规式的转换例:将文法例:将文法GS转换成正规式转换成正规式 G:Sa A|a AdA|d先由产生式得先由产生式得:S=aA+a A=dA+d=d*d将将A代入代入S中得中得:S=a(d*d)+a利用正利用正规规式变换得式变换得S=a(d*d+)=ad*说明说明:d*d|=(|d|dd|)d|=d|dd|=d*所求正规式为所求正规式为ad*例:将文法例:将文法GZ转换成正规式转换成正规式 G:Z0A A0A|0B B 1A|先由产生式得先
18、由产生式得:B=1A|将将B代入代入A中得中得:A=0A|0(1A|)A=0A|01A|0=(0|01)A|0利用规则利用规则(A-xA|y)得得:A=(0|01)*0 将将A代入代入Z中得中得:Z=0(0|01)*0即为所求正规式即为所求正规式例:将描述标识符的文法转换成正规式例:将描述标识符的文法转换成正规式 l|l|d 提取公因子提取公因子:=l|(l|d)=(l|d)|l利用规则利用规则(A-Ax|y)得得:=l(l|d)*即为所求正规式即为所求正规式将将上的一正规式上的一正规式r r转换成文法转换成文法G=(VG=(VN N,V,VT T,S,P),S,P)方法方法V VT T=,=
19、,首先形规则首先形规则SrSr,S,S为为G G的开始符的开始符不断利用下面的规则做变换不断利用下面的规则做变换,直到直到每个产生式最多每个产生式最多含有一个终结符为止含有一个终结符为止原产生式原产生式变换后产生式变换后产生式规则规则1 1AxyAxyAxB ByAxB By规则规则2 2AxAx*y yAxA Ay AxA Ay 即即AxA|yAxA|y规则规则3 3Ax|yAx|yAx AyAx Ay其中其中B B为一新非终结符为一新非终结符2.2.正规式到正规文法的转换正规式到正规文法的转换例例1 将将R=a(a|d)*转换成相应的正规文法转换成相应的正规文法令转换成文法令转换成文法G=
20、(VN,VT,P,S)其中其中VT=a,d,文法开始符为文法开始符为S首先形成首先形成Sa(a|d)*,然后变换然后变换SaA A(a|d)*A(a|d)A|AaA|dA|最终有产生式:最终有产生式:SaA,A,AaA,AdA例例:将将R=(a|b)(aa)*(a|b)转换成相应的正规文法转换成相应的正规文法令转换成文法令转换成文法G=(VN,VT,P,A)其中其中VT=a,b,文法开始符为文法开始符为A首先形成首先形成A(a|b)(aa)*(a|b),然后变换然后变换A(a|b)B B(aa)*(a|b)BaaB|(a|b)最终产生式:最终产生式:AaB,AbB,BaC,Ba,Bb,CaBB
21、aC|a|b CaB3.4 有穷自动机有穷自动机(也称有限自动机也称有限自动机)v是具有离散输入与输出系统的一种抽象数学模型是具有离散输入与输出系统的一种抽象数学模型v作用作用:能准确地识别正规集,即识别正规文法所定能准确地识别正规集,即识别正规文法所定义的语言和正规式所表示的集合义的语言和正规式所表示的集合v意义意义:为词法分析程序的自动构造提供了理论基础。为词法分析程序的自动构造提供了理论基础。v分类分类:确定的有穷自动机确定的有穷自动机(Deterministic Finite Automata)(Deterministic Finite Automata)不确定的有穷自动机不确定的有穷
22、自动机(Nondeterministic Finite Automata)(Nondeterministic Finite Automata)3.4.1 确定的有穷自动机(确定的有穷自动机(DFA)一一.定义定义:一个一个DFA MDFA M是一个五元组是一个五元组:M=M=(Q Q,f f,S S,Z Z)1.1.Q Q是一有穷状态集,每个元素称为一个状态是一有穷状态集,每个元素称为一个状态2.2.是是一一个个有有穷穷字字母母表表,每每个个元元素素称称为为一一个个输输入入字符字符3.3.f f是是一一个个从从QQQQ的的单单值值映映射射。f(qf(qi i,a,a)=)=q qj j意意味味
23、着着当当前前状状态态为为q qi i、输输入入字字符符为为a a时时,将将转转换换到到下一状态下一状态q qj j(唯一的后继状态)唯一的后继状态)4.4.SQSQ,是是唯一唯一的初态。的初态。5.5.Z Z Q,Q,是是一一个个终终态态集集,终终态态也也称称为为可可接接受受状状态态或结束状态。至少由一个终止状态组成。或结束状态。至少由一个终止状态组成。例例DFA M=DFA M=(SS,U U,V V,Q,aQ,a,b,f,S,Qb,f,S,Q)其中其中f f定义为:定义为:f f(S S,a a)=U=Uf f(S S,b b)=V=V f f(V V,a a)=U=Uf f(V V,b
24、b)=Q=Q f f(U U,a a)=Q=Qf f(U U,b b)=V=V f f(Q Q,a a)=Q=Qf f(Q Q,b b)=Q=Q3.4.1 确定的有穷自动机(续)确定的有穷自动机(续)二二.DFA表示成状态转换图表示成状态转换图(Transition Diagram)每个状态对应图中的一个结点:每个状态对应图中的一个结点:初态为唯一初态结点,用初态为唯一初态结点,用=标记;标记;终态对应终态结点,用终态对应终态结点,用双圈双圈表示。表示。若若有有f(qi,a)=qj,则则从从结结点点qi到到结结点点qj画画标标记为记为a的的有向弧有向弧。3.4.1 确定的有穷自动机(续)确定的
25、有穷自动机(续)例例DFA M=DFA M=(SS,U U,V V,Q,aQ,a,b,f,S,Qb,f,S,Q)f f(S S,a a)=U=Uf f(S S,b b)=V=V f f(V V,a a)=U=Uf f(V V,b b)=Q=Q f f(U U,a a)=Q=Qf f(U U,b b)=V=V f f(Q Q,a a)=Q=Qf f(Q Q,b b)=Q=Q状态转换图表示为状态转换图表示为:bSUVQaaaba,bb三三.DFA表示成状态转换矩阵(转换表)表示成状态转换矩阵(转换表)例例DFA M=DFA M=(SS,U U,V V,Q,aQ,a,b,f,S,Qb,f,S,Q)f
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第3章 词法分析 词法 分析
限制150内