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