收藏 分享(赏)

编译原理第3讲.ppt

上传人:知足长乐 文档编号:1225224 上传时间:2018-06-19 格式:PPT 页数:64 大小:1.53MB
下载 相关 举报
编译原理第3讲.ppt_第1页
第1页 / 共64页
编译原理第3讲.ppt_第2页
第2页 / 共64页
编译原理第3讲.ppt_第3页
第3页 / 共64页
编译原理第3讲.ppt_第4页
第4页 / 共64页
编译原理第3讲.ppt_第5页
第5页 / 共64页
点击查看更多>>
资源描述

1、第三章 词法分析,上海电力学院 彭 源,本章学习内容,内容: 掌握:词法分析程序的构造,正规式、正规文法、有限自动机之间的转换,NFA到DFA的转换、DFA的化简理解:正规文法、正规式、DFA的概念、NFA的概念,词法分析程序的设计,词法分析程序,词法分析是编译过程中的第一个阶段,在语法分析前进行 ,也可以和语法分析结合在一起作为一遍。词法分析程序的功能: 读入源程序字符串,识别开具有独立含义的最小语法单位单词,词法分析程序,输出的单词符号通常用二元式表示: (单词种别,单词符号的属性值)单词种别:通常用整数编码。如何分种,怎样编码是一个技术问题。取决于处理上的方便。标识符一般统归为一种。常数

2、宜按类型(整、实、布尔等)分种。关键字可视其全体为一种,也可以一字一种。运算符可采用一符一种,也可把具有一定共性的运算符视为一种。界符一般一符一种。,词法分析程序,单词符号的属性值:反映单词特性或特征的值。一个种别含有一个单词符号:种别编码完全代表单词符号一个种别含有多个单词符号:应给出有关单词符号的属性信息。如某个标识符,常将存放它有关信息的符号表项的指针作为其属性值;对于某个常数,则将存放它的常数表项的指针作为其属性值。,词法分析程序,例:while (i=j) i-;经词法分析器处理后,它将转换为如下的单词符号序列:= , - ,词法分析程序,实现方式完全独立方式:词法分析程序作为单独一

3、遍来实现。词法分析程序读入整个源程序,它的输出作为语法分析程序的输入。相对独立方式:把词法分析程序作为语法分析程序的一个独立子程序。语法分析程序需要新符号时调用这个子程序。,词法分析程序,源程序的输入 为了方便单词符号的识别,一般将输入串预处理一下:删除无用字符(空白符、跳格符、回车符和换行符及注解等),词法分析程序,超前搜索 某些语言的单词间没有明确的界符 ,究竟起什么作用,要在上下文环境中才能识别。 在读到一个单词后,在当前位置处做个标记,继续向前读,直到明确了刚才单词的含义之后,再退回到标记处重新分析,这个过程就是超前搜索 。例如:DO99K=1,10 DO语句DO99K=1.10 赋值

4、语句IF(5.EQ.M)I=10 IF语句IF(5)=55 赋值语句,描述词法规则的三种方式,正规文法,正规表达式(Regular Expression),有限自动机FA(Finite Automata),一:正规文法,多数程序设计语言单词的语法都能用正规文法(3型文法)描述正规文法回顾:文法的任一产生式的形式都为AB或A,其中A ,BVN , VT *。正规文法描述的是VT*上的正规集,例如 : 用s表示az中的任一英文字母,d表示09中任一数字:描述由字母和数字构成的且不能以数字开头的标识符的正规文法为: sssdsd描述无符号整数(允许首位为0)的正规文法 dd,一:正规文法,二:正规表

5、达式,对于字母表,我们感兴趣的是它的一些特殊的符号串集-正规集。正规集是字母表上的符合一定规则的符号串构成的集合正规表达式是一种适合描述符合一定规则的符号串的表示法,可由它定义正规集。,二:正规表达式,定义(正规式和它所表示的正规集):设字母表为1 和都是上的正规式,它们所表示的正规集分别为和;2 任何a ,a是上的一个正规式,它所表示的正规集为a;3 假定U和V都是上的正规式,它们所表示的正规集分别为L(U)和L(V),那么,(U), UV, UV, U也都是正规式,它们所表示的正规集分别为L(U), L(U)L(V), L(U)L(V)和(L(U)。4 仅由有限次使用上述步骤而定义的表达式

6、才是上的正规式,仅由这些正规式所表示的字集才是上的正规集。,例 令=a,b, 上的正规式和相应的正规集的例子有:正规式 正规集a abab (ab)(ab)a (ab) (ab)(aabb)(ab),二:正规表达式,a,a,b,ab,aa,ab,ba,bb, ,a,aa, 任意个a的串, ,a,b,aa,ab 所有由a和b组成的串,上所有含有两个相继 的a或两个相继的b组成的串,二:正规表达式,例:令=A,B,0,1 ,则:正规式 正规集(A|B)(A|B|0|1)* 上的“标识符”的全体(0|1)(0|1)* 上“数”的全体例 =d,.,e,+,-,其中d代表09的数字。则上的正规式 d(.

7、dd )(e(+- )dd ) 表示的是: 无符号数的集合,二:正规表达式,设r,s,t为正规式,正规式服从的代数规律有:1。rs=sr“或”服从交换律2。r(st)=(rs)t“或”的可结合律3。(rs)t=r(st)“连接”的可结合律4。r(st)=rsrt (st)r=srtr 分配律 5。 r=r, r=r是连接的恒等元素,程序中的单词都能用正规式来定义:令l表示az的字母,d表示09的数字: l ( l | d)* 表示标识符集合 dd* 表示无符号整数也能用正规文法来表示:llldld 正规式比正规文法更容易让人理解单词是按怎样的规律构成的,且可以从某个正规式自动地构造识别程序。,

8、二:正规表达式,两个正规式等价,若两个正规式所表示的正规集相同,则认为二者等价。两个等价的正规式U和V记为U=V。例如: (ab)= ba, b(ab)*=(ba)*b等,二:正规表达式,正规文法和正规式间的等价性,等价性: 对任意一个正规文法,存在一个定义同一语言的正规式 对任意一个正规式,存在一个定义同一语言的正规文法,将上的一个正规式U转换成文法G=(VN,VT,S,P)VT= ,首先形成产生式SU,S为G的开始符不断利用下面的规则做变换,直到每个产生式最多含有一个终结符为止,其中B为一新非终结符,正规文法和正规式间的转换,例: 将R=a(a|d)*转换成相应的正则文法 令转换成文法G=

9、(VN,VT,P,S)。其中VT=a,d, 文法开始符为S。首先形成Sa(a|d)*,然后变换 SaA A(a|d)*,A(a|d)A A,AaA AdA,最终有产生式: SaA , A , AaA,AdA,正规文法和正规式间的转换,正规文法和正规式间的转换,将正规式: 1(1|0)*101 转换成文法G=(VN,VT, S,P)。其中VT=0,1, 文法开始符为S。首先形成S1(1|0)*101S1AA(1|0)A|101 A1A|0A|101,将正规文法转换成正规式将每个非终结符的所有产生式合并并改写为正规式用代入法解正规式方程组最后只剩下一个开始符号定义的正规式,其中不含非终结符正规文法

10、到正规式的转换规则:,正规文法和正规式间的转换,例:将文法GS转换成正规式 G:Sa A|a AdA|d先由产生式得:S=aA|a A=d*d将A代入S中得: S=ad*d|a利用正规式变换得 S=a(d*d|)=ad*所求正规式为ad*,正规文法和正规式间的转换,正规文法和正规式间的转换,例:将文法GS :S0S|1S|1A|0B A1C|1 B0C|0 C 0C|1C|0|1 转换成正规式C= (0|1)C|(0|1)=(0|1)*(0|1)B=0|0(0|1)*(0|1)=0(| (0|1)*(0|1) )=0(0|1)*A=1|1(0|1)*(0|1) =1(| (0|1)*(0|1)

11、 )=1(0|1)*S=(0|1)S|11(0|1)*| 00(0|1)* =(0|1)S|(00|11)(0|1)* =(0|1)*(00|11)(0|1)*,三、有限自动机,三、有限自动机,有限自动机作为一种识别装置,它能准确地识别出正规文法所定义的语言或正规式所表示的集合(正规集),也即是定义出了语法规则。有限自动机分为:确定有限自动机非确定有限自动机,三、有限自动机,确定有限自动机的定义: 确定有限自动机 DFA M 是一个五元组 M=(S, , , s0,F):S 有限状态集,它的每一元素称为一个状态;有穷字母表,它的每一个元素称为一个输入字符;从 S 到S的单值映射, (s,a)=

12、s意味着在当前状态 s情况下,输入字符为a时,将转换到 s状态。s0唯一的一个初始状态, s0SF 终止状态集, 是F S,可为空集。,三、有限自动机,例:设有M1=(0,1,2,3,a,b,f,0,3),其中:f(0,a)=1 f(0,b)=2 f(1,a)=3 f(1,b)=2f(2,a)=1 f(2,b)=3f(3,a)=3 f(3,b)=3DFA的映射关系可由状态转换矩阵表示。行标表示状态,列标表示输入符号,矩阵元素表示f的值。,三、有限自动机,假定 DFA M 含有 m个状态和 n个输入字符,那么,这个图含有m个状态结点,每个结点最多只能有 n条弧从结点射出并与别的结点相连结,每条弧

13、上的标记是字母表 上的一个字符。终态结点用双圆圈表示。,f(0,a)=1 f(0,b)=2 f(1,a)=3 f(1,b)=2f(2,a)=1 f(2,b)=3f(3,a)=3 f(3,b)=3,a,b,a,b,M1=(0,1,2,3,a,b,f,0,3),用状态转换图表示,从初始结点出发到任一个终止结点的任一条路径上各边标记的符号的连接所形成的符号串是DFA M可接受的符号串。称为DFA M所识别(读出或接受)。,若M的初态结点同时又是终态结点,则为空字可以为M所识别。,DFA M所能识别的字的全体记为L(M).,显然,不能被接受的字符串有两种情况:(1) 读完输入串,状态不停在终态;(2)

14、 在读过程中出现不存在的映射,使自动机无法继续动作。,abb,例:四个DFA能识别的语言(初始状态:A),+,三、有限自动机,非确定有限自动机(NFA) 一个非确定有限自动机(NFA)M是一个五元组M=(S, , , s0,F)。其中:S :同DFA定义 :同DFA定义 :S * 到S的子集的映射S0: S0 S,是非空的初态集;F: F S,同DFA定义,三、有限自动机,NFA与DFA的主要区别是:(1) NFA的初态不唯一; DFA的初态唯一(2) NFA的f是多值函数,一个结点的多条引出弧可标同一符号; DFA的f是单值函数,一个结点的多条引出弧是不同的符号。(3) NFA弧上的标记可以

15、是字; DFA弧上的标记是字母表中的字母, DFA是NFA的特例,对于每个NFA M都有与之等价的DFA M ,使L(M)=L(M),三、有限自动机,例 设有M3=(P,Q,R,a,b,f,S,Z),其中 S= P,Q,Z=R,可用正规式表示为:b*(ab(bb)*|b(bb)*)|b(bb)*,NFA MDFA M(确定化),假定NFA M=(S, , , s0,F),对其进行如下改造:步骤1:NFA M NFA M 引进新的初态结点X,从X到S0中任意结点连接一条箭弧,(注:若原S0中的任意节点都没有进来的箭弧,则可省略此步) 对状态转换图实施如下页所示的替换,重复这种分裂过程一直到图中每

16、条箭弧上的标记或者为或者为中的单个字母.将得到的最终的NFA记为M,NFA MDFA M(确定化),NFA MDFA M(确定化),NFA MDFA M(确定化),步骤2:NFA M DFA M 通过构造状态转换矩阵来实现,NFA MDFA M(确定化),几个概念设I是M的状态集的子集,定义I的闭包(-CLOSURE(I)为:若状态qI,则q-CLOSURE(I);若状态qI,那么从q出发经任意条弧可达的任何状态q-CLOSURE(I)设I是M的状态集的子集,I的a弧转换(move(I,a)表示I中状态经过一条a边可到达的状态的集合。而Ia=-CLOSURE (move(I,a) )。,S,3

17、,1,S,3,1,4,Z,3,5,3,1,5,S31,315,316,315,316,31524Z,316,315,31624Z,31524Z,31624Z,31524Z,3164Z,3164Z,3154Z,31624Z,3154Z,31624Z,3154Z,31524Z,3164Z,a,b,A,D,C,B,a,b,E,F,G,b,a,a,NFA MDFA M(确定化),练习:a(a|b)*,求它的DFA,NFA MDFA M(确定化),NFA状态转换矩阵,等价的DFA状态转换矩阵,确定有限自动机的化简(求最小DFA),DFA M的化简:寻找一个状态比M少的DFA M,使得L(M)=L(M)D

18、FA的最小化:将DFA的状态集合分割成某些不相交的子集,使得任何不同的两个子集中的状态都是可区别的,而同一子集中的任何两个状态都是等价的.最后,在每个子集中都选出一个代表,同时消去其他的等价状态.,若从状态s出发能读出某个字而停于终态,那么从状态t也能读出相应的字停于终态,反之也成立,则称s和t是等价的,若s和t不等价,则称二者为可区别的,确定有限自动机的化简(求最小DFA),(1) 首先把 状态集 S分成 终态集 和非终态集0=I01,I02。终态集 和非终态集是可区分的.(2) 设经k次划分后含有 m个子集:k=I k1,Ik2, Ikm。这些子集到现在为止都是 可区分的.然后继续考察这些

19、子集是否还可再分:对于某个Ikq,若存在某个输入字符a使得(Ikq)a落入现行k中n个不同的集合,则将Ikq划分为n个不相交的组,使得每个组中状态s的sa都落入k的同一子集.(3) 重复 (2) ,直至所有子集可不再分。(4)把最终划分k中的每一个子集当做一个状态,原先导入导出到该子集中任一状态的弧现改为导入导出到该新状态,若该子集包含原有的初态,则代表此集合的新状态为最小化后 M的初态 ;若该子集包含原有的终态,则代表此集合的新状态为最小化后M的终态 。,例:DFA的化简,S,A,B C,D,E,F,A S,B,S B,练习:有DFA M如图:划为4和 0,1,2,3只有状态3在输入为b时后

20、继状态不在0,1,2,3中,因此状态集分为3和0,1,2对于0,1,2:状态1在输入为b时的后继状态不在0,1,2中,因此划分为1和0,2对于0,2 :对于相同输入字符,该子集中每一状态的后继状态都相同,因此不再可划分最后划分为:4 3 1 0,2,对于划分结果4, 3, 1, 0,2,把0,2合并为一个状态,分别标记为新状态D, C, B, A, 其状态转换图如图:,各个工具之间的转换正规文法(左线性文法,右线性文法)正规式确定有限自动机非确定有限自动机上面这些工具在接受语言方面是等价的,1.由正规式构造状态图,构造方法: 正规式 转换 a PQ P|Q P*,S,Z,S,Z,S,Z,S,Z

21、,P*,j,P,1.由正规式构造状态图,例: 构造出正规式(a|b)* abb的自动机,S,Z,(a|b)* abb,S,Z,(a|b)*,abb,a,b,b,a|b,a,b,2.由FA构造正规式,反复利用下面的规则消弧:,V1,1,2,V2,V1 V2 * V3,1,2,3.由正规文法构造状态图,右线性文法 (1)对每个非终结符画一个结点,开始符S为开始结点;(2)增设一个终止结点Z;(3)对形如Ua的规则,画一条从U到Z的a弧;(4)对形如UaW的规则,画一条从U到W的a弧;,A-0|0B|1DB-0D|1CC-0|0B|1DD-0D|1D,N,Z,d,d,3.由正规文法构造状态图,左线性

22、文法(1)对每个非终结符画一个结点,开始符S为终止结点;(2)增设一个开始结点Z;(3)对形如Ua的规则,画一条从Z到U的a弧;(4)对形如UWa的规则,画一条从W到U的a弧;,Z,N,d,d,N-Nd|d,3.由正规文法构造状态图,G=,其中P 为:G=,其中P 为:E-0|C0C-B1B-0|C0D-1|C1|D1|D0|B0,4.由FA构造正规文法,构造右线性文法设DFA M= 若s0 F,令GR=其中P 是由下面规则定义的产生式集合:当B F时,对M中任一形如f(A, a)=B的转换函数有:A-aB当B F时,对M中任一形如f(A, a)=B的转换函数有:令A-a|aB若s0 F ,则

23、在1的基础上添加一个新的非终结符s0 和产生式s0 - s0|,并将s0 代替s0作为开始符号。类似可得由FA到左线性文法的构造过程,/,/,4.由FA构造正规文法,例:S-aA|bBA-bB|a|aDB-aA|b|bDD-bD|b,若s0 F:当B F时,对M中任一形如f(A, a)=B的转换函数有:A-aB当B F时,对M中任一形如f(A, a)=B的转换函数有:令A-a|aB若s0 F ,则在1的基础上添加一个新的非终结符s0 和产生式s0 - s0|,并将s0 代替s0作为开始符号。,/,/,5.左线性文法和右线性文法的转换,通过FA作为中介来进行,自动机、正规文法、正规表达式的相互转

24、化,正规文法,NFA,正规表达式,DFA,最小化,作业,一:有语言L=w|w0,1*,并且w中至少有两个1,又在任何两个1之间有偶数个0 ,试写出该语言的正规表达式。二:设语言L是满足下述条件的符号串构成的语言: 若出现 a ,则其后至少紧跟两个 c ,其中字母表为a,b,c,请构造对应的最小DFA。三:写出下面有限自动机识别的正规式,作业,四:已知文法G1: SaB|BbC|bDCcB|cDd试构造其对应的最小DFA,并给出状态转换图和构造过程。 五:设有L(G)=a2n+1b2ma2p+1|n0,p0,m1。(1) 给出描述该语言的正规表达式;(2) 构造识别该语言的确定有限自动机(可直接用状态图形式给出)并化简。,作业,六: 将图所示的非确定有限自动机(NFA)变换成等价的确定有限自动机(DFA)并化简。其中,X为初态,Y为终态。然后根据最小DFA,写出对应的正规文法(右线性),

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑环境 > 环境科学

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报