第三章词法分析及有穷自动机课件.ppt
《第三章词法分析及有穷自动机课件.ppt》由会员分享,可在线阅读,更多相关《第三章词法分析及有穷自动机课件.ppt(127页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第三章词法分析及有穷自动机第1页,此课件共127页哦第三章词法分析及有穷自动机 主主 要要 内内 容容 词法分析程序的设计过程。词法分析程序的设计过程。描述单词的文法:正规文法和描述单词的文法:正规文法和 正规式及它们之间的转正规式及它们之间的转换。换。单词识别机制(有穷自动机)。单词识别机制(有穷自动机)。正规式,正规文法和有穷自动机三者之间相互转换。正规式,正规文法和有穷自动机三者之间相互转换。第2页,此课件共127页哦1.词法分析程序的任务词法分析程序的任务一、词法分析程序的任务及处理方式一、词法分析程序的任务及处理方式 1.词法分析程序的任务词法分析程序的任务主要任务:从左至右逐个字符
2、地对源程序进行扫描,产生一个个单词序列,用以语法分析。词法分析程序(扫描程序):执行词法分析的程序。第3页,此课件共127页哦2.词法分析程序的处理方式词法分析程序的处理方式词法分析程序与语法分析程序接口方式有两种:v第一种方式:将词法分析作为单独一遍扫描,即在语法分析之前,实现源程序的词法分析工作。其输出(单词串)形成一个中间文件(内部形式的源程序表),然后移交给语法分析程序。第4页,此课件共127页哦v第二种方式:将词法分析程序编写成一个子程序,每当语法分析程序需要读一个新单词时,便去调用它。注:后一种方式比较好。因为不需要在内存中构造和保存中间文件。第5页,此课件共127页哦二、词法分析
3、程序的二、词法分析程序的I/O 1.输入输入字符串表示的源程序 2.输出输出单词符号序列或单词符号。1)程序语言的单词符号程序语言的单词符号单词:指语言中具有独立意义的最小语法单位。语言中的单词符号:一般可归结为五种:v保留字(基本字):如if,for,and等个数确定v标识符:表示常量、变量、类型、过程等名称个数不确定v常数:如34,-0.37等个数不确定v运算符:如+,-,*,/,等个数确定v界线符:如逗号,分号,括号等个数确定第6页,此课件共127页哦注:保留字,运算符,界线符可列表,供词法分析程序查询;保留字,运算符,界线符可列表,供词法分析程序查询;标识符和常数可用正规文法或正规式描
4、述,供词法分析程序标识符和常数可用正规文法或正规式描述,供词法分析程序识别。识别。2)输出的单词形式输出的单词形式v二元组:(单词的种别码,单词自身值)1o 单词的种别码:表示单词的种类单词的种别码:表示单词的种类v分类的原则:处理简单v分类的方法:使每一个单词对应一个整数码v分类的目的:最大限度地区别各个单词单词地分类法有多种:v一种一类v一字一类或一符一类第7页,此课件共127页哦具体:具体:保留字:一字一种。如:if1then2。标识符:统归一种。常数:整数,实数,布尔v统为一种v或按类型分整数11实数12布尔13或全体一种第8页,此课件共127页哦+29:=17=21-14 18=22
5、*15 23/16,1thenb:=10表示为一种一类的单词输出形式。第10页,此课件共127页哦if a1 then b:=10词法分析器=(1,if )(字符串表示的源程序)(2,a ),(4,)(3,1 的二进制数)(1,then )(2,b )(4,:=)(3,10 的二进制数)第11页,此课件共127页哦v例:采用一字一类或一符一类地分类技术,则保留字单词自身值可无,但事先构造一个保留字单词对照表,其值可在词表中查到。if a1 then b:=10词法分析器=(1,)字符串表示的源程序(10,a)(23,)(3,1的二进制数)(2,)(10,b)(17,)(11,10 的二进制数)
6、上面符号表示要查保留词表第12页,此课件共127页哦表2.1保留字单词表单词类别码单词类别码.If1+29Then2-14else3*15./16.23for19:=17.第13页,此课件共127页哦2.词法分析程序的设计过程词法分析程序的设计过程一、词法分析程序的设计过程一、词法分析程序的设计过程v设计过程:v词法分析程序设计过程:词法分析程序设计过程:把有的单词(如:标识符和常数标识符和常数)用正规文法或正规式描述;将正规文法或正规式转换成等价的状态转换图(最小化的DFA图);根据状态转换图设计词法分析程序(状态转换图可视为词法分析程序的框图)。转换规则转换规则分裂法分裂法子集法子集法状态
7、转换图(DFA图)第14页,此课件共127页哦二、用状态转换图设计词法分析程序二、用状态转换图设计词法分析程序1.词法分析程序的预处理词法分析程序在识别单词前,需要对输入到缓冲区的源程序进行预处理。预处理:删去无用的空格,跳格,回车和换行等编辑性字符;删去注释部分每次对一串定长(如120个字符)的输入字符进行预处理,并装入一个指定的扫描缓冲区中。第15页,此课件共127页哦v扫描缓冲区是一个一分为二的区域,每一个区域可容纳120个字符,且相互交替使用。v搜索指针从单词起点开始搜索,如果遇到半区的边界但尚未达到单词的终点时,则可将后续的120个输入字符装进缓冲区的另一半中。第16页,此课件共12
8、7页哦2.状态转换图状态转换图v状态转换图是为了识别正规文法或正规式而专门设计的有向图。他是有穷自动机的非形式化表示。v状态转换图的组成状态转换图的组成:1o 有限个状态结点有限个状态结点状态结点代表正规文法的非终结符(用单圈表示);开始状态结点:用双箭头指示;终止状态结点:用双圈表示。2o 弧线弧线弧上的标记弧上的标记x指明在射出弧的结点状态下可能出现指明在射出弧的结点状态下可能出现的输入字符或字符类的输入字符或字符类,即终结符。即终结符。(表示机器的识别方向表示机器的识别方向).大多数单词结构是用正规文法描述的大多数单词结构是用正规文法描述的x第17页,此课件共127页哦例:=|=|=+|
9、-|*|/|.=;|,|(|)|.。3.由正规文法构造状态转换图由正规文法构造状态转换图1)左线性正规文法构造状态转换图左线性正规文法的一般形式:U=a|wa第18页,此课件共127页哦左线性正规文法构造状态转换图的步骤如下:增加一个开始状态结点s(假定文法的词汇表中不含s);以每个非终结符为状态作结点;对于形如U=a的每一个规则,引一条从开始状态s到状态U的弧,弧上标记为a;对于形如U=wa的每一个规则,引一条从状态w到状态U的弧,弧上标记为a;以识别符号为终止状态。第19页,此课件共127页哦例:设有正规文法GZ:Z=U0|V1U=Z1|1V=Z0|0(描述的语言为L(G)=01,10)则
10、状态转换图如下:以开始符号以开始符号Z 作终态作终态新增加开始新增加开始状态状态S第20页,此课件共127页哦例:标识符的转换图:从开始状态出发到某一终止状态结点为止,所经过的路径上的符号串,称能为该状态转换图所接收(识别)的符号串。如:标识符x26为上述转换图识别,识别路径为第21页,此课件共127页哦2)右线性正规文法构造状态转换图右线性正规文法U=a|aV构造状态转换图的步骤:增加一个终止状态结点z(假定文法的词汇表中不含z);以每个非终结符为状态作结点;v对于形如U=a的每一个规则,引一条从开始状态U到终止状态z的弧,弧上标记为a;v对于形如U=aV的每一个规则,引一条从状态U到状态V
11、的弧,弧上标记为a;以识别符号为开始状态。第22页,此课件共127页哦根据状态转换图设计词法分析程序根据状态转换图设计词法分析程序状态转换图实际上是编写词法分析程序的框图根据状态转换图写出相应的词法分析程序的方法:1o对于每个状态构造一小段程序。对于每个状态构造一小段程序。功能:从输入串中读一个字符;判明读入字符与由此状态出发的哪条弧上的标记匹配,便转至相匹配的那条弧所指的状态;均不匹配时便失败(不能达到正常出口)第23页,此课件共127页哦2o 再根据图形决定小段程序之间的调用。再根据图形决定小段程序之间的调用。注:词法分析程序除了识别单词外,还可为语法程序提供更多的信息。因此,可在这些小段
12、程序中加上一些语义处理(如对数值进行10=2等)例:设有关于单词的文法G=(VN,VT,P,N1)其中,VN=N1,N2,N3,N4,N5,N6,N7VT=d,e,f,P:N1=dN2|N3|eN5N2=dN2|N3|eN5|N3=dN4这里d表示数字(09);e10;f;表示空字符;N1表示无符号数,其一般形式为:ddddefddN4=dN4|eN5|N5=dN7|fN6N6=dN7N7=dN7|第24页,此课件共127页哦v试构造识别此单词的词法分析程序1 根据右线性正规文法,画出状态转换图根据右线性正规文法,画出状态转换图N1=3N2=34N2=34N3=345N4=3456N4=345
13、6(达到出口),自上而下的推导过程。自上而下的推导过程。第25页,此课件共127页哦2根据状态转换图写词法分析程序为每一个状态结点写一个过程或函数:对N1结点:ProcedurePN1BeginCh:=getchar();Ifch=”e”thenPN5Elseifch=”d”thenPN2Elseifch=”thenPN3ElseerrorEnd;第26页,此课件共127页哦对N2结点:ProcedurePN2BeginCh:=getchar();Ifch=”e”thenPN5Elseifch=”d”thenPN2Elseifch=”thenPN3Elsereturn;End;对N3,N4,N
14、5,N6,N7结点分别写出程序段:第27页,此课件共127页哦3 正规式与有穷自动机正规式与有穷自动机v为了进一步讨论词法分析程序的自动生成,需要将状态转换图的概念加以形式化;同时将由正规文法描述的单词由正规式描述,可利用有穷自动机生成词法分析程序。一、正规式与正规集一、正规式与正规集语言的单词结构不仅由正规文法描述,还可以由正规式描述。第28页,此课件共127页哦例:=|此正规文法描述了一个语言的集合。定义在字母,数字上的以字母开头的符号串的集合。这个集合还可以用正规式描述:字母(字母|数字)*。v正规式描述的字符串的集合称为正规集1正规式(也称正则式,正则表达式)和正规集的递正规式(也称正
15、则式,正则表达式)和正规集的递归定义归定义设有字母表=a1,a2,an,那么(1),ai都是上的正规式,它们所描述的正规集分别为,ai;第29页,此课件共127页哦(2)若e1和e2都是上的正规式,它们所描述的正规集L(e1)、L(e2),则:1o正规式的“或”(|)运算:e1|e2也是正规式,相应正规集为L(e1|e2)=L(e1)L(e2);2o正规式的“连接”(.)运算:e1e2也是正规式,相应正规集为L(e1e2)=L(e1)L(e2);3o正规式的“闭包”(*)运算:(e1)*也是正规式,相应正规集为L(e1)*)=(L(e1)*;(3)仅由有限次使用(1),(2)定义的表达式才是上
16、的正规式,由这些正规式所表示的字符集才是上的正规集。第30页,此课件共127页哦例:设=a,b,则上的正规式和正规集有正规式正规集1o a和baL(a)=a和L(b)=bL(a)=L(a)L(a)L(a)=a=a,aa,.基本3 oa|bL(a|b)=L(a)L(b)=a,b4 oabL(ab)=L(a)L(b)=ab5 oa*L(a*)=(L(a)*=L(a)L(a)L(a).=a*=,a,aa,aaa,.复合6 oba*L(ba*)=L(b)L(a*)=b,ba,baa,baaa,7 oa|ba*L(a|ba*)=L(a)L(ba*)=a,b,ba,baa,8 o(a|b)*L(a|b)*
17、)=(L(a|b)*=a,b*=,a,b,aa,ab,所有ab组成的串9 oa(a|b)*L(a(a|b)*)=L(a)(L(a)L(b)*=aa,b*10 o(a|b)*(aa|bb)(a|b)*L(a|b)*(aa|bb)(a|b)*)=a,b*aa,bba,b*012+123+2o第31页,此课件共127页哦 注:注:.正规式仅由字母正规式仅由字母中的终结符号,通过或,连接和闭包中的终结符号,通过或,连接和闭包三种运算组成的式子。三种运算组成的式子。例:有字母表例:有字母表=a,b,下面正规式,求正规集。,下面正规式,求正规集。ba*正规集:正规集:b开头后面跟开头后面跟0个或若干个个或
18、若干个a。a(a|b)*正规集:正规集:a开头后面跟开头后面跟0个或个或a、b任意排列。任意排列。例:有字母表例:有字母表=a,b,下面用自然语言描述的正规集,求正,下面用自然语言描述的正规集,求正规式规式(可能不唯一可能不唯一)。以以ab结尾的所有字符串。结尾的所有字符串。(a|b)*ab 包含偶数个包含偶数个b的所有字符串。的所有字符串。(bb)*只包含一个只包含一个a的所有字符串。的所有字符串。b*ab*不包含不包含ab子串的所有字符串。子串的所有字符串。b*a*以以a开头开头b结尾的所有字符串。结尾的所有字符串。a(a|b)*b第32页,此课件共127页哦正规式的性质(1)正规式的等价
19、性定义:若正规式e1与e2描述的正规集相同,即L(e1)=L(e2),则e1与e2等价,记做e1=e2。(2)正规式的代数性质设r,s,t为正规式,正规式服从的代数规律有:1or|s=s|r“或”满足交换律2or|(s|t)=(r|s)|t“或”满足结合律3o(rs)t=r(st)“连接”满足结合律。“连接”不满足交换律4or(s|t)=rs|rt(s|t)r=sr|tr“连接”满足分配律5or=rr=r是“连接”的恒等元素第33页,此课件共127页哦(3)正规式的恒等式设A和B式正规式,有例:证明:A*=|AA*成立。证明:利用对应的正规集来证明:L(AA*|)=L(A)L(A*)UL()=
20、L(A)L(A)*UL()=L(A)(L(A)UL(A)U(L(A).)UL()=L()U(L(A)U(L(A)U(L(A).)=(L(A)*)=L(A*)A*=AA*|例:设=d,e,+,-则上的正规式:d*(dd*|)(e(+|-|)dd*|)表示无符号数:2.12,3.6e-2等。表示无符号数的正规式,比表示无符号数的正规文法显得直观,简洁。表示无符号数的正规式,比表示无符号数的正规文法显得直观,简洁。1o(A*)*=A*2 oA|BA=(|B)A3 oA A*=A*A;A=AA*4 oA*=|A A*;A*=(A|)*012312+第34页,此课件共127页哦3正规文法与正规式的转换正
21、规文法与正规式的转换关系:对任意一个正规文法存在定义同一语言的正规式反之:对于每一个正规式,存在一个生成同一语言的正规文法。两者之间具有等价的转换关系。有的语言容易用正规文法定义,有的语言则更容易用正规式定义转换:1o 正规式正规式-正规文法正规文法将上的一个正规式转换成正规文法G=(VN,VT,S,P):v首先:令VT=第35页,此课件共127页哦v再确定产生式P和VN,其方法:对任何正规式r,选择非终结符S生成产生式S=r,并将S定义为G的识别符号。若r含有正规式x,y,对形如A=xy(连接的变换)产生式,用A=xB,B=y两个产生式替换。其中B是新选择的非终结符。对已经转换成文法中的形如
22、:A=x*y(闭包和连接的变换)的产生式,则重写为:A=xA注:若y是则,AxAA=yA对形如:A=x|y(或的变换)的产生式,重写为A=x,A=y不断利用上述规则作变换,直到每个产生式右部最多含有一个终结符为止。第36页,此课件共127页哦例:将正规式R=a(a|d)*转换成相应的正规文法。解:令S是文法的识别符号,则首先形成:S=a(a|d)*然后形成:S=aA,A=(a|d)*(其中AVN)对于A=(a|d)*重写为:A=(a|d)AA=对于A=(a|d)A重写成:A=aA,A=dA最后转换的等价正规文法G=(VN,VT,S,P)VT=a,dVN=S,AP:S=aAA=aA|dA|第37
23、页,此课件共127页哦2o正规文法正规文法正规式正规式基本是上述的逆过程。最后只剩下一个识别符号定义的产生式,且产生式的右部不含非终结符。其转换规则如下表:规则文法产生式正规式1A=xB,B=yA=xy2A=xA|yA=x*y3A=x,A=yA=x|y注:注:正规文法与正规式互相转换,关键式:正规文法与正规式互相转换,关键式:AxA|y A=x*y第38页,此课件共127页哦例:正规文法Gs:S=aAS=aA=aAA=dAA=aA=d求正规式解:先有:SaA|a规则3A=(aA|dA)|(a|d)规则3再将A的正则式变成:A=(a|d)A|(a|d)“或”分配律根据规则2变成:A=(a|d)*
24、(a|d)再代入S的右部得:S=a(a|d)*(a|d)|a再利用正则式代数变换:S=a(a|d)*(a|d)|)S=a(a|d)*即:a(a|d)*为所求的正则式第39页,此课件共127页哦简便转换方法是:(1)将正规文法中的每一个非终结符表示成关于它的一个正规方程,获得一个联立方程组.(2)依据求解规则:v若x=x|,写成方程x=x+(“|”用“+”表示);则解为x=*.v若x=x|,写成方程x=x+(“|”用“+”表示);则解为x=*.以及正规式的分配律,交换律和结合律求关于文法识别符号的正规式方程组的解.此解就是关于文法识别符号S的一个正规式.例如,上例:先写出正规式方程组(方程组中用
25、“+”代替“|”):S=aA|a写成:S=aA+a(1)A=aA|dA|a|d写成:A=aA+dA+a+d(2)将(2)式简化为:A=(a+d)A+(a+d)使用求解规则:A=(a|d)*(a|d)(3)将(3)的A代入(1)式:S=a(a|d)*(a|d)|a=a(a|d)*(a|d)|)a(a|d)*(a|d)|)=a(a|d)*即为所求的正规式。第40页,此课件共127页哦 例:设有正规文法例:设有正规文法G:Z=0AA=0A|0BB=1A|试给出该文法的正规式。试给出该文法的正规式。解:给出相应的正规式方程组:解:给出相应的正规式方程组:Z=0A(1)A=0A+0B(2)B=1A+(3
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第三 词法 分析 有穷 自动机 课件
限制150内