词法分析主要内容回顾.ppt
《词法分析主要内容回顾.ppt》由会员分享,可在线阅读,更多相关《词法分析主要内容回顾.ppt(69页珍藏版)》请在三一办公上搜索。
1、2023/11/17,第三章:词法分析,1,第2章主要内容回顾,文法的定义:=(T,N,)推导与归约:最左推导(左句型、最右归约)最右推导(右句型、规范句型、规范(最左)归约)语法树二义性(定义)文法的分类0型文法(短语结构文法)、1型文法(上下文有关文法)、2型文法(上下文无关文法)、3型文法(正则文法),2023/11/17,第三章:词法分析,2,第三章 词法分析,单词的描述工具(正规表达式与正规集)状态转换图与基本符号的识别有限自动机词法分析器的设计与实现,本章主要内容:,2023/11/17,第三章:词法分析,3,3.1 单词的描述工具,正规表达式与正规集的定义:正规表达式也称正规式,
2、是用以描述单词符号的方便工具,也是表示正规集的工具。正规表达式的定义:P52。设是一个字母表,是上的RE,L()=;是上的RE,L()=;对于a,a是RE,L(a)=a;如果r和s是RE,L(r)=R,L(s)=S,则:r与s的“或”(r|s)是RE,L(r|s)=RS;r与s的“连接”(rs)是RE,L(rs)=RS;r的克林闭包(r*)是RE,L(r*)=R*。只有满足、的才是RE。,2023/11/17,第三章:词法分析,4,3.1 单词的描述工具,一个由正规表达式表示的语言称为一个正规集。例3-1,令=a,b,则上的正规式和正规集的例子有:正规式 正规集 a a a|b a,b ab
3、ab(a|b)(a|b)aa,ab,ba,bb a*,a,aa,aaa任意个a组成的串的集合 a|a*b a,b,ab,aab,aaab含有符号串a和包括零个或多于零个的a后跟一个b的所有符号串形成的集合。(a|b)*,a,b,aa,ab,ba,bb,aaa所有含a和b的符号串组成的集合。,2023/11/17,第三章:词法分析,5,3.1 单词的描述工具,两个正规表达式的等价:P54。如果两个正规表达式表示同样的语言,则称这两个正规式是等价的。如(a|b)与(b|a),(a|b)*与(a*b*)*都是等价的。正规表达式的运算优先级和代数规律:P54*高于“连接”和|,“连接”高于|具有交换律
4、、结合律“连接”具有结合律、和对|的分配律()指定优先关系.意义清楚时,括号可以省略 是“连接”运算的恒等元素。程序设计语言中的单词都能用正规表达式来定义。比如,用l来代表字母,d代表数字,=l,d,则r1=l(l|d)*表示的是标识符,r2=dd*则定义了无符号整数,r3=d*(.dd*|)(e(+|-|)dd*|)表示的是无符号数。,2023/11/17,第三章:词法分析,6,3.1 单词的描述工具,正规式与正规文法上的正规式到正规文法G转换(特指右线性正规文法):方法:令其中的VT=;对于任何正规式r,选择S,生成Sr,然后按以下三条规则对Sr进行分解直到每个产生式最多含有一个终结符为止
5、。并将S定为G的开始符号;若x和y都是正规式,对形如Axy的产生式重写为:A xB和B y两产生式,其中B是新选择的非终结符;对形如A x*y的产生式,重写为:A xA和A y 对形如A x|y的产生式,重写为:A x和A y,2023/11/17,第三章:词法分析,7,3.1 单词的描述工具,例3-2,将r=a(a|d)*转换成相应的正规文法:解:令S为文法的开始符号,首先形成Sa(a|d)*然后对其进行分解,得到SaA和A(a|d)*,再对后条规则重写为:A(a|d)A和A,最终形成的文法G为:SaA AaA AdA A 将正规文法G转换成上的正规式:基本上是上述过程的逆过程,最后只剩下一
6、个开始符号定义的产生式,并且该产生式的右部不含非终结符,则此产生式的右部为所求。其转换规则如下:规则1:A xB,B y A xy 规则2:A xA|y A x*y 规则3:Ax,Ay A x|y,2023/11/17,第三章:词法分析,8,3.1 单词的描述工具,例3-3,将文法GS:S aA S a A aA A dA A a A d 转换为相应的正规表达式。解:过程如下:S aA|a A aA|dA|a|d 可写为 A(aA|dA)|(a|d)可写为 A(a|d)A|(a|d)可写为 A(a|d)*(a|d)将其代入S可得:S a(a|d)*(a|d)|a a(a|d)*(a|d)|)a
7、(a|d)*即a(a|d)*为所求。,2023/11/17,第三章:词法分析,9,3.2 状态转换图与基本符号的识别,状态转换图的引进:P63 通常,为了识别标识符,画出识别标识符的流程图如右图所示。现在引进“状态”这个概念,在开始状态下取得一个字母便处于标识符状态,如果后面取到的仍然是字母或数字,则继续处于标识符状态,直到不是字母或数字才离开标识符状态,根据此将其变成下面的图:,2,状态转换图是为了识别正规文法的句子专门设计的有向图。它只包含有穷多个状态,即有穷多个结点。(除了终止状态结点不代表任何非终结符号外)每个状态结点都代表文法的非终结符号。状态之间用箭弧(或称有向边)连接。弧上的标记
8、指明在射出弧的结点状态下可能出现的输入字符。,2023/11/17,第三章:词法分析,10,3.2状态转换图与基本符号的识别,状态转换图的构造:P64构造方法:对于右线形正则文法,状态转换图构造步骤如下:以每个非终结符为状态结点,开始符号对应初态 S;增设一个终态 Z;对于规则 AaB,画从状态 A 到 B 的弧,标记为 a;对于规则 Aa,画从状态 A 到终态 Z 的弧,标记为a。例3-4,为例3中所给的文法GS构造其转换图如下:,S aAS aA aAA dAA aA d,2023/11/17,第三章:词法分析,11,3.2状态转换图与基本符号的识别,利用状态图识别句子的步骤如下:(=a1
9、a2an,aiVT)1.从初态S出发,并自左至右逐个扫描中的各个字符,显然,在状态S之下所扫视的输入字符为a1,此时在结点S所射出的箭弧中寻找标记为a1的箭弧(如不存在,则表明有词法错误),读入a1,并沿箭弧所指的方向前进到下一个状态;2.设在状态Ai的情况下,所扫视的输入字符为ai+1,在结点Ai所射出的各箭弧中寻找标记为ai+1 的箭弧,读入ai+1,并过渡到下一状态Ai+1;3.重复上面的过程,直到中全部字符读完且进入终态Z时,宣告整个识别结束,已被接受。,因为:S a1 A1,A1 a2A2,A2 a3A3,Ai ai+1Ai+1,An-1 anAn所以有:S=a1 A1=a1a2A2
10、=a1a2a3A3=a1a2a3an,2023/11/17,第三章:词法分析,12,3.3 有限自动机,确定的有限自动机DFA M:,定义:状态图的形式化。见P73的 定义3.1。确定的有限自动机DFA M 是一个五元组,即 M=(,Q,q0,F,)其中:字母表 Q:有限状态集合 q0:初态 F Q:终态集合:Q Q 的单值映射,2023/11/17,第三章:词法分析,13,3.3 有限自动机,表示形式:状态图:假定M有n个状态,m个输入符号,那么这个状态转换图含有n个状态结,每个状态结最多由m条箭弧射出与别的状态结相连接。准确地说,若转移函数对于q,qQ及a,有(q,a)=q,则从q到q有一
11、条标记为a的箭弧。整个图含有唯一一个初态结和若干个终态结。矩阵表示:一个DFA还可以用一个矩阵的形式来表示,该矩阵的行表示状态,列表示输入字符,矩阵元素表示在相应状态行和输入字符列下的新状态,即k行a列为(k,a)的值。用“”表示初态,否则第一行即是初态,相应终态行在表的右端标以1,非终态标以0。例3-5,设DFA M=(a,b,S,U,V,Q,S,Q,)其中定义为:(S,a)=U,(S,b)=V,(V,a)=U,(V,b)=Q,(U,a)=Q,(U,b)=V,(Q,a)=Q,(Q,b)=Q,2023/11/17,第三章:词法分析,14,3.3 有限自动机,例3-5中的DFA的状态图表示如下:
12、,(S,a)=U,(S,b)=V(V,a)=U,(V,b)=Q(U,a)=Q,(U,b)=V(Q,a)=Q,(Q,b)=Q,矩阵表示如右:,2023/11/17,第三章:词法分析,15,3.3 有限自动机,利用DFA对字符串的识别:P74 对于 上的任何符号串*,若存在一条从初态结到终态结的通路,在这条通路上的所有箭弧标记符号连接成的符号串恰好是,则称为DFA所识别。或 若*,(q0,)=p,其中q0为DFA M的开始状态,p F,F为终态集,则称为DFA所接受(识别)。为了理解上述定义,扩充函数如P75上。即对任何a,qQ将扩张为:(q,)=q(q,a)=(q,),a)用此定义试证:baab
13、可为例5的DFA M所接受。过程:(S,baab)=(S,b),aab)=(V,aab)=(V,a),ab)=(U,ab)=(U,a),b)=(Q,b)=Q,Q属于终态,得证。DFA M所识别的语言:所能识别的符号串的全体,记为L(M)。即L(M)=|*,若存在p F,使(q0,)=q。,(S,a)=U,(S,b)=V(V,a)=U,(V,b)=Q(U,a)=Q,(U,b)=V(Q,a)=Q,(Q,b)=Q,2023/11/17,第三章:词法分析,16,3.3 有限自动机,非确定的有限(状态)自动机NFA M:在前面的从正则文法构造NFA的例子中,恰好从一个状态射出的弧的标记是两两不同的。但是
14、,如果有两条规则AaT1和AaT2,那么从A到T1和T2的弧的标记都是a。此时,不能用DFA的映射来表示状态为A时,输入a时的后继状态。也就是说,当状态为A,输入为a时,这个转换图的下一步动作出现了不确定性。即此时映射函数已不是单值的而是多值函数((A,a)=T1,(A,a)=T2)。这就要扩充确定有限自动机的概念。定义:P75的定义3.2。对定义的理解:这里,并不要求具有单值性,它可以把序偶(qi,ai)映射到Q的子集qk1,qk2,qkn,即(qi,ai)=qk1,qk2,qkn。,2023/11/17,第三章:词法分析,17,3.3 有限自动机,的意义:是Q 的幂集,即Q中所有子集组成的
15、集合。比如,Q=1,2,3则=,1,2,3,1,2,1,3,2,3,1,2,3有 个子集。Q 表示映射到 子集中的某一个,但并不是说某个子集(如1,3)就是合法的状态,而只是说1和3都有可能,还需继续去试1还是3。状态转换图的表示:一个含有n个状态,m个输入符号的NFA M,也可以形象地通过一张状态转换图来表示,这张图含有n个状态结,每个状态结可射出若干箭弧与别的状态结相连接。准确地说,如果(q,a)=q1,q2,qk,则从q出发分别向q1,q2,qk各射出一条标记为a的箭弧(q1,q2,qkQ,a,k可以是0),整个图含有一个初态结和若干个终态结。,2023/11/17,第三章:词法分析,1
16、8,3.3 有限自动机,例3-6,一个NFA M=(a,b,0,1,2,3,4,0,2,4,)其中(0,a)=0,3,(0,b)=0,1,(1,b)=2,(2,a)=2,(2,b)=2,(3,a)=4,(4,a)=4,(4,b)=4。与之对应的状态图表示如下:,b,b,b,2023/11/17,第三章:词法分析,19,3.3 有限自动机,例3-7,构造一个DFA M,它接受字母表a,b,c上,以a或b开始的字符串,或以c开始但所含的a不多于一个的字符串。满足此条件的状态转换图如下:,故:DFAM=(a,b,c,0,1,2,3,0,1,2,3,)其中:(0,a)=1(0,b)=1(0,c)=2(
17、1,a)=1(1,b)=1(1,c)=1(2,a)=3(2,b)=2(2,c)=2(3,b)=3(3,c)=3,2023/11/17,第三章:词法分析,20,3.3 有限自动机,利用NFA对字符串的识别:P76 对于 上的任何符号串*,若存在一条从初态结到终态结的通路,且在这条通路上的所有箭弧标记符号连接成的符号串恰好是,则称为NFA所识别。若q0 F,F为终态集,这时q0状态结既是初态结也是终态结,因而存在一条从初态结到终态结的-道路,此时空符号串可为NFA所接受。具有-转移的非确定有限自动机:P78。若文法G中有形如A B(相当于A B)或A 时,在状态图中会有从A出发标有的箭弧到B或终态
18、结,也就是说转移函数应该有(A,)=B,据此将非确定的有限自动机扩充为:Q()的映射,而其它不变,这样所形成的非确定有限自动机为具有-转移的非确定有限自动机。此自动机与其它非确定有限自动机基本上是一样的,只是在识别时不理睬那些标记为的箭弧即可。,2023/11/17,第三章:词法分析,21,3.3 有限自动机,NFA DFA的转换:事实已经证明了不管是非确定的有限自动机M还是具有-转移的非确定的有限自动机M,都可以找到一个与之等价的确定有限自动机M,使得L(M)=L(M)。P76的定理3.1 转换思路:由M出发构造与之等价的M的办法是M的状态对应于M的状态集合,即要使转换后的DFA的每一个状态
19、对应NFA的一组状态。该DFA使用它的状态去记录在NFA读入一个输入符号后可能到达的所有状态,也就是说,在读入符号串a1a2a3an之后,该DFA处在这样一个状态,该状态表示这个NFA的状态的一个子集T,而T是从NFA的开始状态沿着某个标记为a1a2a3an的路径可以到达的那些状态。引进两个定义:(对状态集合I)状态集合I的-closure(I):定义为一状态集,是状态集I中的任何状态经任意条弧而能到达的状态的集合。,2023/11/17,第三章:词法分析,22,3.3 有限自动机,状态集合I的a弧转换Ia:定义为一状态集,是指从状态集I出发先经过a弧后再经过若干条弧而能到达的状态的集合。可以
20、写作:Ia=-closure(J),J=move(I,a),其中,J是从I中任一状态出发经过一条a弧到达的状态集合,记为move(I,a)。比如,对于以下状态图中:-closure(0)=0,1,2,4,7在这里设I=0,1,2,4,7,则因为有move(I,a)=3,8=J,所以 Ia=-closure(J)=-closure(3,8)=1,2,3,4,6,7,8,2023/11/17,第三章:词法分析,23,3.3 有限自动机,具体转换步骤:(子集构造法)以下面的基于字母表=a,b上的具有-转移的非确定有限自动机M为例。步骤1:以I,Ia、Ib等为列做表,其中I列第一行的内容是初态的-闭包
21、所得到的状态集合。并以此为I计算Ia、Ib等,而 且在所计算出的Ia、Ib等中若有新的状态集产生,就重复 以此新的集合为I再此计算Ia、Ib等,直到在所得的Ia、Ib等中不再产生新的状态集为止。,2023/11/17,第三章:词法分析,24,3.3 有限自动机,步骤1后的结果如下:,x,5,1,初态的-闭包,5,1,3,5,1,4,5,1,3,2,6,y,5,1,4,5,1,3,5,1,4,2,6,y,5,1,3,2,6,y,5,1,4,6,y,5,1,3,6,y,5,1,4,2,6,y,5,1,3,6,y,5,1,4,2,6,y,5,1,3,2,6,y,5,1,4,6,y,2023/11/1
22、7,第三章:词法分析,25,3.3 有限自动机,步骤2:在上表中将原NFA初态的-闭包作为转换后的DFA的初态,包含原NFA终态的状态作为转换后的DFA的终态,并进行重新编号得到转换后的DFA的状态转移矩阵如下:,0,0,0,1,1,1,1,包含原终态的状态作为新的终态,2023/11/17,第三章:词法分析,26,3.3 有限自动机,步骤3:画出转换后的DFA的状态图:,2023/11/17,第三章:词法分析,27,3.3 有限自动机,正规文法与有限自动机的等价性(证略):通过前面引入有限自动机概念时我们看到正规文法G所用以识别句子的状态转换图就是某个有限自动机的状态转换图。这就是说正规文法
23、G所产生的语言和某个有限自动机M所识别的语言是相同的,此时称G和M是等价的。等价性:对于任何一个正规文法,都存在一个FA M,使L(M)=L(G),反之亦然。见书中P8287内容。有限自动机与正规表达式的等价性:上的符号或空或经过连接、闭包所得的为正规表达式,而且可以看到,程序设计语言中的表达式(单词)大多数都可通过正规表达式比较清晰、方便地表示出来。,2023/11/17,第三章:词法分析,28,3.3 有限自动机,有限自动机与正规表达式的等价性:可以证明,对任何一个正规表达式r,都存在一个FA M,使L(M)=L(r),反之亦然。见书中P87的定理3.5。结合正规文法与有限自动机的等价性,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 词法 分析 主要内容 回顾

链接地址:https://www.31ppt.com/p-6607492.html