《文法与语言》PPT课件.ppt_第1页
《文法与语言》PPT课件.ppt_第2页
《文法与语言》PPT课件.ppt_第3页
《文法与语言》PPT课件.ppt_第4页
《文法与语言》PPT课件.ppt_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第二章 文法和形式语言,本章主要介绍形式语言理论中的一些最基本的概念和基础知识,它是学习以后各章节的基础。,2.1 符号和符号串,2.1.1 字母表与符号串 字母表:元素的非空有穷集合,习惯上用大写字母表示。 符号:字母表中元素。 符号串:符号的有穷序列。 空符号串:不含任何符号的符号串,记为。 符号串集合:字母表上的符号串组成的集合。,2.1.2 符号串的运算 符号串的长度:符号串中所包含的符号个数。设符号串为x,则其长度记为|x|。 例:空符号串长度为0,即|=0。 符号串的连接:设有符号串x和y,把y的所有符号相继写在x的符号串之后所得到的符号串即称为x和y的连接,记为xy. 例:x = x=x 符号串的方幂:设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=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 文法和语言,语言是特定字母表上具有一定语法结构的符号串的集合。若用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:非空有限的非终结符号集; S:开始符号,是文法G规定的最终目标; P:产生式的集合。 V=VNVT称为文法GS的字汇表。 VNVT= ,SVN。 为了方便,表示文法时只列出产生式,而不以4元组显示地表示出来。,3、文法的BNF(巴科斯范式)表示 即在规则中引入或者符号“”,将左部相同的规则缩写到一起。 4、递归规则和递归文法 左部和右部含有相同非终结符号的规则称为递归规则,至少含有一条递归规则的文法称为递归文法。,2.2.2 推导和归约,设文法G=(VN,VT,P,S),Uu是其中的产生式,是文法任意的符号串,则有 U u 其中符号“”仅表示“一步推导”,即利用产生式对左边符号串中的一个非终结符进行替换,得到右边的符号串。我们称U直接推导出u,也可以说u直接归约到U。 如果有直接推导序列: a0 a1 a2 an 则说a0推导出an推导,记作: ,我们称这个序列是一个从到的长度为n的推导,其中 表示0步或多步推导。,最左、最右推导和规范推导,1、在xUyxuy直接推导中,即U是符号串xUy中最左非终结符,则称此直接推导为最左直接推导。若一个推导的每一步直接推导都是最左直接推导,那么此推导称为最左推导。 2、在xUy:=xuy直接推导中,即U是符号串xUy中最右非终结符,则称此直接推导为最右直接推导。若一个推导的每一步直接推导都是最右直接推导,则称此推导为最右推导。 最右直接推导又称为规范直接推导,最右推导又称为规范推导。 最左推导的逆过程是最右归约,最右推导的逆过程是最左归约。,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中的一个符号; 树的根结点标记是文法的识别符号S; 若树的一个结点至少有一个叶子结点,则该结点的标记一定是一个非终结符; 若树的一个结点有多个叶子结点,该结点的标记为A,这些叶子结点的标记从左到右分别是B1,B2,Bn,则(AB1B2Bn)P。,语法树的任一非叶结点连同它射下的部分称为语法树的子树,仅有父子两代的子树称为简单子树; 语法树每一子树的末端结点从左到右排列起来所组成的符号串,是该句型相对与该子树根的短语; 语法树每一简单子树的末端结点从左到右排列起来所组成的符号串,是该句型相对与该简单子树根的简单短语; 语法树的最左简单子树的末端结点从左到右排列起来所组成的符号串,是该句型的句柄;,2、语法树与短语、简单短语、句柄的关系,例 已知算术表达式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)如果一个文法既有左递归,又有右递归的非终结符号A,则文法必然是二义性的。 值得注意的是,没有一种算法,能在有限的步骤内确切的判断一个文法是否是二义性的。,文法二义性与语言的二义性关系: 如果一个二义性的文法,我们可以把它变换成一个等价的但无二义性的文法,那么我们可以认为该二义性文法对应的语言中,某些句子的二义性完全是二义性文法所带来的,而语言本身是非二义性的。 如果一个语言,根本就不存在非二义性的文法,则这样的语言为二义性的语言。,2.4文法的扩充BNF表示和语法图,2.5 文法的实用限制,2.5.1 有害规则 定义:文法中形如 UU 的规则就称为有害规则。 如果文法中含有有害规则,它除了造成文法的二义性以外,对定义语言则是没有任何的意义。 2.5.2 多余规则 定义: 设文法中某一规则,其左部的非终结符号为U,若满足下列条件之一,则称该规则为多余规则。 U (除文法的开始符号)不出现在该文法的任何其它规则的右部; 若在规则中采用该规则,则不能由U推出终结符号串。,2.5.3 文法的实用限制 文法的实用限制主要指: 文法不含有害规则; 文法不含多余规则; 在具体应用中,可能还会有其他限制,比如: 文法不含左递归; 文法不含空规则:U ,(1) 文法的-规则的消除 -规则,即形如U的空符号串规则; 文法-规则消除的前提条件: 该文法所定义的语言L(GS)不含; 消除文法GS的 -规则的算法: 求出文法中所有能导出空符号串的非终结符号的集合 EMPTY(GS) ; 删除文法中所有-规则; 删除文法中只能导出空符号串的非终结符; 若文法中某规则右部含有属于EMPTY(GS) 的非终结 符,则需扩展该规则。 注意:文法的-规则消除后,不能包含有害规则和多余规 则,如果有,则应该把它们去掉。,2.5.4 文法的变换,(2)文法直接左递归的消除 只要修改形如UUxy的规则,使文法不含直接左递归的非终结符号,便可消除这类文法的左递归。具体有以下两种方法: 1)采用EBNF表示法可消除文法的直接左递归; 形如UUxy的规则,采用EBNF的花括号表示,变可得到: U y x 2)引入新的非终结符号消除文法中的直接左递归; 形如UUx1 Ux2 Uxm y1 y2 ym的规则,可引入一个新的非终结符U,则得到等价的规则: U y1 U y2U ymU U x1U x2U xm U ,(3)文法一般左递归的检测和消除 文法的递归性除了由直接左递归的非终结符引起外,还可由间接左递归的非终结符引起。对于间接左递归,它不像直接左递归那样一目了然,要消除它,首先要解决的是如何判断! 1) 间接左递归的判断 对于文法GS和它的任意非终结符号U,如果 UHEAD(U) U为左递归的非终结符号, GS为左递归文法。 其中, HEAD(U)是指从非终结符U出发,能够推出的所有符号串中,处于符号串头部的非终结符号的集合,简称头符号集。 求头符号集的一般算法: 实际上,要判断一个文法是否具有递归性,只要找到一个递归的非终结符号就可以了。,求头符号集HEAD(U)的一般算法: 设文法GS不含空规则,并设初值HEAD(U)为空集,则 考察文法所有规则,若文法中有形如UA的规则,则AHEAD(U); 若PHEAD(U),则HEAD(P)中的任意非终结符号属于HEAD(U); 重复,直到HEAD(U)不再增大为止。 例 GA: ABcd|dD BAB|b Cc DAD|DB|Ca 求所有非终结符号的头符号集。,2) 间接左递归的消除 用如下算法可以消除文法的间接左递归,只不过要注意有一个前提条件:该文法无回路,并且不含-规则。 算法如下: 将文法GS的所有非终结符号按任意一种顺序排列为U1、U2、 Ui Un ; 对于任意非终结符Ui 的规则,如果存在形如Ui Uj y 其中ji,则按如下方法改写Ui(i从0开始)的规则: Uj x1 x2 xn 则 Ui x1 y x2 y xn y 当 Ui 的所有规则的右部都用其本身或排列在其后的非终结符开头(即使间接递归直接化),然后再消除Ui的直接左递归,直到所有的非终结符的规则改造完毕为止。,例 消除文法GA: ABcd|dD BAB|b Cc DAD|DB|Ca 的左递归。,2.6 文法和语言的分类,0型文法与0型语言 1型文法与1型语言 2型文法与2型语言 3型文法与3型语言,0型文法,0型文法(无限制的文法)。其产生式具有以下形式: 其中,V+,且至少含有一个非终结符;V*,1型文法(上下文有关文法),1型文法G的产生式具有以下形式: 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*,则称该文法为右线性文法,如果文法的产生式只含有下面的两种形式: 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. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论