编译原理第2章文法和语言.pptx
《编译原理第2章文法和语言.pptx》由会员分享,可在线阅读,更多相关《编译原理第2章文法和语言.pptx(82页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、学习重点学习重点n1 文法的定义、分类和二义性n2 最左推导、规范推导(或最右推导)n3 语言、句型和句子n4 短语、简单短语(或直接短语)和句柄n5 语法树第1页/共82页形式形式语言语言(P12)n如果不考虑语义和语用,只从语法这一侧面来看语言,它是由符合某种语法(用规则定义)的句子构成的集合,这种意义下的语言称作形式语言。例 汉语:所有符合汉语语法的句子的全体 英语:所有符合英语语法的句子的全体 程序设计语言:所有符合该语言语法的程序的 全体第2页/共82页形式形式语言语言n形式语言抽象地定义为一个数学系统,即能用数学符号和规则描述的语言。形式语言理论是对符号串集合的表示法、结构及其特性
2、的研究。这种理论对程序设计语言的设计和编译程序的构造有着重大的作用。第3页/共82页2.1 2.1 字母表和符号串字母表和符号串(P12)字母表(或符号集):元素的非空有穷集合。例 二进制数语言的字母表=0,1 汉语的字母表中包括汉字、数字及标点符号等 PASCAL语言的字母表是由字母、数字、若干专用符号及BEGIN、IF之类的保留字组成 C语言的字母表由字母、数字、若干专用符号以及if、else、while等关键字组成第4页/共82页2.1 2.1 字母表和符号串字母表和符号串 符号:字母表中的元素。例 =a,b,for,1,则a,b,for,1都是的符号。不要把符号理解成字符。典型的符号有
3、字母、数字、各种标点符号和各种运算符。第5页/共82页2.1 2.1 字母表和符号串字母表和符号串 符号串:由字母表上0个或多个符号所组成的任何有穷序列。空符号串 也是字母表上的符号串,它由0个符号组成。例=0,1,则,0,1,01,10,00,11,100,0110,111110000等二进制数都是上的符号串 =a,b,c,+,*,则,a,b,c,+,*,aa,ab,ac,a+,a*,ba,bb,bc,b+,b*,aaa,bbb等都是上的符号串一个字母表上的全部符号串所组成的集合是无穷的。第6页/共82页2.1 2.1 字母表和符号串字母表和符号串 符号串的长度:指符号串x中所含符号的个数,
4、记为|x|。特别地,|=0。例 =a,b,c,+,*,|abc|=3,|abc+*abc|=8符号串相等:若x、y是字母表上的两个符号串,那么当且仅当组成x的各符号与组成y的各符号依次相等时,则符号串x与符号串y相等,记作x=y。例 当x=abbc,y=abbc 时,则x=y 当x=ab,y=ba 时,则xy 第7页/共82页2.1 2.1 字母表和符号串字母表和符号串 符号串的前缀:指从符号串x的末尾删除0或多个符号后得到的符号串。例 u、uni、university都是university的前缀符号串的后缀:指从符号串x的开头删除0或多个符号后得到的符号串。例 ty、sity、univer
5、sity都是university的后缀 符号串的子串:指从符号串x的开头和末尾删除0或多个符号后得到的符号串,例 ver是university的子串,符号串的前缀、后缀都是它的子串。第8页/共82页2.1 2.1 字母表和符号串字母表和符号串 符号串的连接:若x、y是两个符号串,则xy是将符号串y连接在符号串x的后面。例 x=ab,y=ba,则 xy=abba若x、y是字母表上的两个符号串,则xy也是字母表上的符号串。除x=x=x外,连接没有交换率,即 xy yx。第9页/共82页2.1 2.1 字母表和符号串字母表和符号串 集合的乘积运算:令A、B为两个符号串集合,AB=xy|xA,yB。对
6、于空集合有,有 A=A=A。例 A=a,b,B=c,d,则AB=ac,ad,bc,bd 符号串的幂运算:若x是符号串,则:x0=,x1=x,x2=xx,xn=xxx=xxn-1=xn-1 x,其中 n0。例 x=abc,x0=,x1=abc,x2=abcabc,第10页/共82页2.1 2.1 字母表和符号串字母表和符号串 集合的幂运算:设A为符号串集合,则:A0=A1=A A2=AA An=AAA=AAn-1=An-1 A,其中 n0 例 A=a,b,则 A0=A1=a,b A2=aa,ab,ba,bb 第11页/共82页2.1 2.1 字母表和符号串字母表和符号串 集合的正闭包:设A为一个
7、集合,则:A+=A1A2.An例 A=a,b,则A+=a,b,aa,ab,ba,bb,aaa,aab,集合的闭包:设A为一个集合,则:A*=A0 A+例 A=a,b,则A*=,a,b,aa,ab,ba,bb,aaa,aab,一个集合的闭包比正闭包多个。第12页/共82页例:2.2 文法(P14)文法实际上就是描述语言语法结构的形式规则。第13页/共82页例第14页/共82页例第15页/共82页文法G的形式定义:G=(Vn,Vt,P,Z)Vn(非终结符号集)是一个由非终结符号(一般是大写字母或用)构成的非空有穷集合。Vt(终结符号集)是一个由终结符号(如小写字母、数字、标点符号等)构成的非空有穷
8、集合。VtVn=,VtVn,V是该文法的字母表或词汇表。P(产生式集)是一个由产生式或规则构成的非空有穷集合。产生式的形式为:或:=产生式的左部V+,即不能为空,产生式的右部V*,“”或”“:=”含义相同,表示“定义为”或“由组成”。Z是文法的识别符号或开始符号,Z Vn,要求Z至少必须在某个产生式的左部出现一次。第16页/共82页2.2 2.2 文法文法例2-1(P15)文法 G1=(Vn,Vt,P,Z),其中:Vn=,Vt=the,ate,banana,monkey P由下面8条规则组成:识别符号:the ate banana monkey 第17页/共82页2.2 2.2 文法文法例2-
9、1(P15)文法 G1可以简化写成:G1:the ate banana monkey the ate banana monkey 或第18页/共82页2.2 2.2 文法文法 例2-2(P15)有如下简化表示文法,只给出规则集,写出该文法的终结符号集合、非终结符号集合和识别符号。0123456789解:根据简化约定,可确定:Vn=,Vt=0,1,2,3,4,5,6,7,8,9识别符号:第19页/共82页2.2 2.2 文法文法文法的EBNF表示(P16):用一些特殊的元符号“|”、“”和“”、“”、“(”和“)”、“”和“”来表示文法。例2-3 对例2.2文法的13条规则可缩写成::=:=|:
10、=0|1|2|3|4|5|6|7|8|9“|”:表示“或”。对于具有相同左部的那些规则,如 1,2,n 缩写为:1|2|n第20页/共82页2.2 2.2 文法文法“”:用于括起由中文字组成的非终结符号或由多个字母组成的符号。例(一般写成monkey)第21页/共82页2.2 2.2 文法文法“”和“”:表示可重复连接,tkm表示符号串t可重复连接k到m次,而t表示符号串t可重复连接0到无穷次。例13 等价于:|EE+T|T 与 ET+T 相同字母打头、后面可跟字母或数字的不超过8个字符的标识符文法则为:|07第22页/共82页2.2 2.2 文法文法“”和“”:表示括起来的内容可有可无。如t
11、表示符号串t可有可无。例 IF THEN IF THEN ELSE 可写成:IF THEN ELSE 第23页/共82页2.2 2.2 文法文法“(”和“)”:表示括号内的成分优先。常用于在规则中提取公因子。例 Uxy|xw|xz 可写成:Ux(y|w|z)第24页/共82页2.2 2.2 文法文法 练习(P27习题6)已知文法ET|E+T|E-TTF|T*F|T/FF(E)|i写出该文法的开始符号、Vn和Vt。解:根据简化约定,可确定:开始符号:EVn=E,T,FVt=+,-,*,/,(,),i第25页/共82页2.132.13文法和语言分类文法和语言分类(P26P26)0型文法(或短语结构
12、文法)若文法中有如下形式的规则:其中,V+(即可以是V上的符号序列,但不能为空),V*(即是V上的符号序列,可以是)。如果文法中有产生式的右部为,并且该产生式的左部不是一个非终结符,则该文法一定是0型文法。0型文法描述的语言为0型语言。例 文法G1=(Vn,Vt,P,S),其中:Vn=S,A,B,C,D,E,Vt=a,P=S:=ACaB,Ca:=aaC,CB:=DB,CB:=E,aD:=Da,AD:=AC,aE:=,该文法是一个0型文法。第26页/共82页2.132.13文法和语言分类文法和语言分类(P26P26)1型文法(或上下文有关文法)若文法中有如下形式的规则:Uu 其中,UVn,、V*
13、,u V*,即规则左部可为符号序列,其中U为非终结符号且只有在左右为和的环境下U可变为u。1型文法的产生式左部的长度小于等于其右部的长度,但S除外。1型文法描述的语言为1型语言。例 文法G2=(Vn,Vt,P,S),其中,Vn=S,A,B,C,Vt=a,b,c,P=S:=aSBC,S:=aBC,aB:=ab,bB:=bb,bC:=bc,CB:=BC,cC:=cc,该文法是一个1型文法。第27页/共82页2.132.13文法和语言分类文法和语言分类(P26P26)2型文法(或上下文无关文法)若文法中的规则都具有如下形式:Uu 其中,U Vn,u V*,即2型文法中的规则左部必须是一个非终结符号,
14、规则右部u是V上的符号序列。该文法相当于对1型文法中的规则形式加以限制,即要求和必须为空。2型文法也称作上下文无关文法,描述的语言为2型语言。一般用2型文法来描述程序设计语言的语法规则。例 文法G3=(Vn,Vt,P,N),其中,Vn=N,D ,Vt=0,1,2,3,4,5,6,7,8,9 ,P=N:=ND|D,D:=0|1|2|3|4|5|6|7|8|9 ,该文法是一个2型文法。第28页/共82页2.132.13文法和语言分类文法和语言分类(P27P27)3型文法(或正规文法)若文法中的规则都具有如下形式:Ua|Wa(左线性)或 Ua|aW(右线性)其中,U,WVn,aVt(a可为)。3型文
15、法中的产生式全部是左线性产生式或全部是右线性产生式。3型文法描述的语言为3型语言。用3型文法描述程序设计语言的单词的构词规则,如标识符、无符号整数等。例 左线性3型文法:NN0|N1|N2|N3|N4|N5|N6|N7|N8|N9 N0|1|2|3|4|5|6|7|8|9 这个文法定义的语言就是无符号整数。第29页/共82页2.132.13文法和语言分类文法和语言分类 练习 判断以下文法的类型 S:=ABCC:=BCC:=ABA:=GEBG:=GBFAG:=ADDB:=BDDE:=AEFB:=BFFE:=EaAA:=文法GZ:Z:=0B|1CB:=1Z|1C:=0Z|00型文法3型文法第30页
16、/共82页2.132.13文法和语言分类文法和语言分类 练习 判断以下文法的类型 文法GS:S:=AA:=aABD|abBBD:=CBCB:=CDCD:=BDbB:=bbD:=c文法GZ:Z:=B0C|C1B:=Z1|1C:=Z0|01型文法2型文法第31页/共82页文法的四种分类第32页/共82页2.132.13文法和语言分类文法和语言分类四种文法的关系:通过对文法的产生式逐渐增加限制来定义四种文法,因此 0型语言包含1型语言,1型语言包含2型语言,2型语言包含3型语言。或者说,3型文法是2型文法的特例,2型文法是1型文法的特例,1型文法又是0型文法的特例。第33页/共82页n直接推导():
17、是文法G的一个产生式,x,yV*,符号串xy中的非终结符号用替换,从而得到符号串xy,则表示为:xy xy 其中“”读为“直接推导出”或“直接产生”。即称xy直接推导出xy,或xy直接产生xy。若从反方向看,则称xy直接归约到xy。显然,文法的产生式右部是其左部的直接推导。例 已知文法GS:S0S1,S010S10011 (使用规则S01,x=0,y=1)S 0S1 (使用规则S0S1,x=,y=)0S100S11 (使用规则S0S1,x=0,y=1)2.3 2.3 推导推导(P17)第34页/共82页2.3 2.3 推导推导 练习 已知文法G:|a|b|z 0|1|9 指出下面直接推导所使用
18、的规则:abc abc5第35页/共82页n推导():如果存在一直接推导序列0 1 n,则表示为:0 n 其中,“”读为“推导出”或“产生”,即 0推导出或产生n。若从反方向看,则称n归约到0。n 是推导长度,要求n0。2.3 2.3 推导推导+第36页/共82页2.3 2.3 推导推导例 已知文法::=:=|:=0|1|2|3|4|5|6|7|8|9有:2 将上述三个直接推导连接起来,可得如下推导过程:2则记:2,显然,n=3。+第37页/共82页n广义推导():如果有0 n 或0=n,即n 0,则表示为:0 n 其中,“”读为“广义推导出”或“广义产生”。若从反方向看,则称n广义归约到0。
19、2.3 2.3 推导推导+*第38页/共82页2.3 2.3 推导推导例 已知文法::=:=|:=0|1|2|3|4|5|6|7|8|9 2,也可记为:2,从到的推导,无须使用任何规则,其推导长度n=0,则记作:+*第39页/共82页2.3 2.3 推导推导 例 GS:SaASASbAASSSaAba证明S aabbaa。证明:第1种 SaASaAaaSbAaaSbbaaaabbaa 第2种 SaASaSbASaabASaabbaSaabbaa第3种 SaASaSbASaSbAaaabAaaabbaa+第40页/共82页2.3 2.3 推导推导规范推导(或最右推导):在推导的任何一步,都是对中
20、的最右非终结符进行替换。最左推导:在推导的任何一步,都是对中的最左非终结符进行替换。例 上例中的S aabbaa SaASaAaaSbAaaSbbaaaabbaa(规范推导)SaASaSbASaabASaabbaSaabbaa(最左推导)SaASaSbASaSbAaaabAaaabbaa(非左非右推导)+第41页/共82页2.4 2.4 句型和句子句型和句子(P18P18)句型:设Z是文法G的识别符号,如果Z x,xV*,则称符号串x为文法G的一个句型。显然,Z是文法G的一个句型。*例 在S aabbaa中,有SaASaAaaSbAaaSbbaaaabbaa 则,aAS、aAa、aSbAa、a
21、Sbbaa和aabbaa是该文法的句型,也是该文法的规范句型。+规范句型:能用规范推导产生的句型。第42页/共82页2.4 2.4 句型和句子句型和句子句子:设Z是文法G的识别符号,如果Z x,xVt*,则称符号串x为文法G的一个句子。显然,句型包括句子或说句子是特殊的句型,句子是完全由终结符号组成的句型。+例 在S aabbaa中,有SaASaAaaSbAaaSbbaaaabbaa则,aabbaa是该文法的句子。+第43页/共82页2.4 2.4 句型和句子句型和句子每一个句子都有一个规范推导,但并非每一个句型都有规范推导。例 :=:=|:=0|1|2|3|4|5|6|7|8|9 2句型“2
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译 原理 文法 语言
限制150内