《文法与语言》PPT课件.ppt

上传人:牧羊曲112 文档编号:5520623 上传时间:2023-07-18 格式:PPT 页数:38 大小:333.49KB
返回 下载 相关 举报
《文法与语言》PPT课件.ppt_第1页
第1页 / 共38页
《文法与语言》PPT课件.ppt_第2页
第2页 / 共38页
《文法与语言》PPT课件.ppt_第3页
第3页 / 共38页
《文法与语言》PPT课件.ppt_第4页
第4页 / 共38页
《文法与语言》PPT课件.ppt_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《《文法与语言》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《文法与语言》PPT课件.ppt(38页珍藏版)》请在三一办公上搜索。

1、第二章 文法和形式语言,本章主要介绍形式语言理论中的一些最基本的概念和基础知识,它是学习以后各章节的基础。,2.1 符号和符号串,2.1.1 字母表与符号串 字母表:元素的非空有穷集合,习惯上用大写字母表示。符号:字母表中元素。符号串:符号的有穷序列。空符号串:不含任何符号的符号串,记为。符号串集合:字母表上的符号串组成的集合。,2.1.2 符号串的运算 符号串的长度:符号串中所包含的符号个数。设符号串为x,则其长度记为|x|。例:空符号串长度为0,即|=0。符号串的连接:设有符号串x和y,把y的所有符号相继写在x的符号串之后所得到的符号串即称为x和y的连接,记为xy.例:x=x=x 符号串的

2、方幂:设x是符号串,则x的n次连接称为n次方幂,记为xn.例:x0=,符号串的前缀、后缀、子串 假设x是一个符号串,则有:符号串x的前缀是指:从符号串x的尾部删除若干(含0个)符号后得到的符号串;符号串x的后缀是指:从符号串x的头部删除若干(含0个)符号后得到的符号串;符号串x的子串是指:删除了x前缀(或删除x的后缀或删除x的前缀和后缀)后得到的符号串;对任意的符号串x,x的前缀、后缀都是x的子串,但x的子串不一定是x的前缀或后缀。对任意的符号串x,x和都是符号串x的前缀、后缀,也是x的子串。,2.1.3 符号串集合的运算 符号串集合的乘积:设A、B为符号串集合,则符号串集合的乘积表示为AB=

3、xy|xA,yB,即A中的任意符号串和B中的任意符号串的连接所构成的集合。因为有 x=x=x,所以有 A=A=A 符号串集合的方幂:即同一个符号串集合的乘积。例:设A为符号串集合,则 A0=,A1=A,A2=AA,,符号串集合的闭包 设A为符号串集合,则A的闭包表示为A,其定义为:A的若干次幂(包括0次幂)的并集。它表示符号串集合A上的所有可能的符号串(含)的集合。A=A0A1A2An 符号串集合的正闭包:A的正闭包表示为A,其定义为:A的若干次幂(不包括0次幂)的并集。它表示符号串集合A上的所有可能的符号串(不含)的集合。A=A1A2An显然有A=A0A=A A=AA=AA,2.2 文法和语

4、言,语言是特定字母表上具有一定语法结构的符号串的集合。若用L表示语言,用表示字母表,则 L 文法(Grammar)是定义或描述语言的语法结构的一组形式规则(即语法规则)。一个程序语言的文法的目的就是用适当条数的规则把该程序语言全部成分描述出来。,2.2.1 文法及文法的BNF表示,1、规则 即产生式,是一有序对(U,x),通常记为 Ux(或U=x)其中U为规则的左部,是一个符号,x为规则的右部,为有穷符号串。规则Ux表示符号U由符号串 x组成(或符号U定义为符号串 x),2、文法和字汇表 文法可以定义成一个四元组GS=(VN,VT,S,P)。其中,VT:非空有限的终结符号集;VN:非空有限的非

5、终结符号集;S:开始符号,是文法G规定的最终目标;P:产生式的集合。V=VNVT称为文法GS的字汇表。VNVT=,SVN。为了方便,表示文法时只列出产生式,而不以4元组显示地表示出来。,3、文法的BNF(巴科斯范式)表示 即在规则中引入或者符号“”,将左部相同的规则缩写到一起。4、递归规则和递归文法 左部和右部含有相同非终结符号的规则称为递归规则,至少含有一条递归规则的文法称为递归文法。,2.2.2 推导和归约,设文法G=(VN,VT,P,S),Uu是其中的产生式,是文法任意的符号串,则有 U u 其中符号“”仅表示“一步推导”,即利用产生式对左边符号串中的一个非终结符进行替换,得到右边的符号

6、串。我们称U直接推导出u,也可以说u直接归约到U。如果有直接推导序列:a0 a1 a2 an则说a0推导出an推导,记作:,我们称这个序列是一个从到的长度为n的推导,其中 表示0步或多步推导。,最左、最右推导和规范推导,1、在xUyxuy直接推导中,即U是符号串xUy中最左非终结符,则称此直接推导为最左直接推导。若一个推导的每一步直接推导都是最左直接推导,那么此推导称为最左推导。2、在xUy:=xuy直接推导中,即U是符号串xUy中最右非终结符,则称此直接推导为最右直接推导。若一个推导的每一步直接推导都是最右直接推导,则称此推导为最右推导。最右直接推导又称为规范直接推导,最右推导又称为规范推导

7、。最左推导的逆过程是最右归约,最右推导的逆过程是最左归约。,2.2.3 句型、句子和语言,等价文法:设G1和G2是两个不同的文法,若 L(G1)=L(G2),则称文法G1和G1为等价文法。,2.2.4 文法的递归,如果文法GS至少含有一个递归的非终结符号,则称此文法为递归文法。,2.2.5 短语、简单短语、句柄,短语、简单短语、句柄,2.3 语法树,在自然语言中,可通过树型表示直观地分析句子结构;在形式语言中,则是通过语法树直观地分析文法的句型结构。,1、语法树,设文法G=(VN,VT,P,S),对于文法G的任意一个句型都存在一个相应的语法树:树中每个结点都有一个标记,该标记是VNVT中的一个

8、符号;树的根结点标记是文法的识别符号S;若树的一个结点至少有一个叶子结点,则该结点的标记一定是一个非终结符;若树的一个结点有多个叶子结点,该结点的标记为A,这些叶子结点的标记从左到右分别是B1,B2,Bn,则(AB1B2Bn)P。,语法树的任一非叶结点连同它射下的部分称为语法树的子树,仅有父子两代的子树称为简单子树;语法树每一子树的末端结点从左到右排列起来所组成的符号串,是该句型相对与该子树根的短语;语法树每一简单子树的末端结点从左到右排列起来所组成的符号串,是该句型相对与该简单子树根的简单短语;语法树的最左简单子树的末端结点从左到右排列起来所组成的符号串,是该句型的句柄;,2、语法树与短语、

9、简单短语、句柄的关系,例 已知算术表达式GE:EE+T|T TT*F|F F(E)|i 通过语法树求句型F*i+F的短语、简单短语和句柄。,3、二义性定义:一个文法,如果它的一个句子有两棵或两棵以上的语法树,则称此句子具有二义性。如果一个文法含有二义性的句子,则该文法具有二义性。例 设有文法GE:EE+E|E*E|(E)|i 求句子i+i*i的最左推导及其对应的语法树。,文法二义性的判定:1)有些文法是非二义性,比如LL(1)文法、LR文法、算符优先文法,而且这些文法都是可以判定的,所以只要我们能够证明文法是属于上述某类文法,则该文法必然是非二义性的;2)如果一个文法既有左递归,又有右递归的非

10、终结符号A,则文法必然是二义性的。值得注意的是,没有一种算法,能在有限的步骤内确切的判断一个文法是否是二义性的。,文法二义性与语言的二义性关系:如果一个二义性的文法,我们可以把它变换成一个等价的但无二义性的文法,那么我们可以认为该二义性文法对应的语言中,某些句子的二义性完全是二义性文法所带来的,而语言本身是非二义性的。如果一个语言,根本就不存在非二义性的文法,则这样的语言为二义性的语言。,2.4文法的扩充BNF表示和语法图,2.5 文法的实用限制,2.5.1 有害规则定义:文法中形如 UU 的规则就称为有害规则。如果文法中含有有害规则,它除了造成文法的二义性以外,对定义语言则是没有任何的意义。

11、2.5.2 多余规则定义:设文法中某一规则,其左部的非终结符号为U,若满足下列条件之一,则称该规则为多余规则。U(除文法的开始符号)不出现在该文法的任何其它规则的右部;若在规则中采用该规则,则不能由U推出终结符号串。,2.5.3 文法的实用限制 文法的实用限制主要指:文法不含有害规则;文法不含多余规则;在具体应用中,可能还会有其他限制,比如:文法不含左递归;文法不含空规则:U,(1)文法的-规则的消除-规则,即形如U的空符号串规则;文法-规则消除的前提条件:该文法所定义的语言L(GS)不含;消除文法GS的-规则的算法:求出文法中所有能导出空符号串的非终结符号的集合EMPTY(GS);删除文法中

12、所有-规则;删除文法中只能导出空符号串的非终结符;若文法中某规则右部含有属于EMPTY(GS)的非终结符,则需扩展该规则。注意:文法的-规则消除后,不能包含有害规则和多余规则,如果有,则应该把它们去掉。,2.5.4 文法的变换,(2)文法直接左递归的消除 只要修改形如UUxy的规则,使文法不含直接左递归的非终结符号,便可消除这类文法的左递归。具体有以下两种方法:1)采用EBNF表示法可消除文法的直接左递归;形如UUxy的规则,采用EBNF的花括号表示,变可得到:U y x 2)引入新的非终结符号消除文法中的直接左递归;形如UUx1 Ux2 Uxm y1 y2 ym的规则,可引入一个新的非终结符

13、U,则得到等价的规则:U y1 U y2U ymU U x1U x2U xm U,(3)文法一般左递归的检测和消除 文法的递归性除了由直接左递归的非终结符引起外,还可由间接左递归的非终结符引起。对于间接左递归,它不像直接左递归那样一目了然,要消除它,首先要解决的是如何判断!1)间接左递归的判断 对于文法GS和它的任意非终结符号U,如果 UHEAD(U)U为左递归的非终结符号,GS为左递归文法。其中,HEAD(U)是指从非终结符U出发,能够推出的所有符号串中,处于符号串头部的非终结符号的集合,简称头符号集。求头符号集的一般算法:实际上,要判断一个文法是否具有递归性,只要找到一个递归的非终结符号就

14、可以了。,求头符号集HEAD(U)的一般算法:设文法GS不含空规则,并设初值HEAD(U)为空集,则考察文法所有规则,若文法中有形如UA的规则,则AHEAD(U);若PHEAD(U),则HEAD(P)中的任意非终结符号属于HEAD(U);重复,直到HEAD(U)不再增大为止。例 GA:ABcd|dDBAB|bCcDAD|DB|Ca求所有非终结符号的头符号集。,2)间接左递归的消除 用如下算法可以消除文法的间接左递归,只不过要注意有一个前提条件:该文法无回路,并且不含-规则。算法如下:将文法GS的所有非终结符号按任意一种顺序排列为U1、U2、Ui Un;对于任意非终结符Ui 的规则,如果存在形如

15、Ui Uj y 其中ji,则按如下方法改写Ui(i从0开始)的规则:Uj x1 x2 xn 则 Ui x1 y x2 y xn y 当 Ui 的所有规则的右部都用其本身或排列在其后的非终结符开头(即使间接递归直接化),然后再消除Ui的直接左递归,直到所有的非终结符的规则改造完毕为止。,例 消除文法GA:ABcd|dDBAB|bCcDAD|DB|Ca的左递归。,2.6 文法和语言的分类,0型文法与0型语言1型文法与1型语言2型文法与2型语言3型文法与3型语言,0型文法,0型文法(无限制的文法)。其产生式具有以下形式:其中,V+,且至少含有一个非终结符;V*,1型文法(上下文有关文法),1型文法G

16、的产生式具有以下形式:xUyxuy 其中x,yV*;UVN;uV+。例如:1型文法GS=(VN,VT,P,S)其中,VN=S,X,Y,Z VT=(x,y,z)P=SxSYZxYZ,xYxy,yYyy,yZyz ZYYZ,zZzz,2型文法(上下文无关文法),在1型文法的产生式中上下文x和y用空符号串代替,则有以下形式的产生式称为2型文法:Uu 其中,UVN,uV+。例如:2型文法GE=(VN,VT,P,E)其中,VN=E,T,F VT=+,*,(,),i P=EE+TT,TTFF,F(E)i,3型文法,如果的产生式只含有下面的两种形式:Ua 或 UaB 其中U,BVN,aVT*,则称该文法为右

17、线性文法,如果文法的产生式只含有下面的两种形式:Ua或UBa其中U,BVN,aVT*,则称该文法为左线性文法例如:右线性文法GS=(VN,VT,P,S)其中,VN=S,A,B VT=0,1 P=S011A0B,A1A0B,B010B,2.7 正则表达式与正则集,2.7.1 正则表达式与正则集 正则表达式也称为正则式或正规式,与其对应,它所描述的语言又称为正则集或正规集。设为一字母表,则上的正则式及其所表征正则集可递归的定义如下:1.是一个正则式,相应的正则集为空集;2.是一个正则式,相应的正则集为;3.对于每一a,a是一个正则式,相应的正规集为a;4.若r,s是正则式,且相应的正规集分别记为L r 及L s,则:rs是正则式,相应的正规集为L r L s;rs是正则式,相应的正规集为L r L s;r*是正则式,相应的正规集为L r*;,2.7.1 正则表达式与正则文法将正则文法转换成正则表达式将正则表达式转换成正则文法,The end.,

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号