东北大学秦皇岛分校编译原理课件第二章第三章.ppt

上传人:小飞机 文档编号:5907643 上传时间:2023-09-02 格式:PPT 页数:91 大小:268.63KB
返回 下载 相关 举报
东北大学秦皇岛分校编译原理课件第二章第三章.ppt_第1页
第1页 / 共91页
东北大学秦皇岛分校编译原理课件第二章第三章.ppt_第2页
第2页 / 共91页
东北大学秦皇岛分校编译原理课件第二章第三章.ppt_第3页
第3页 / 共91页
东北大学秦皇岛分校编译原理课件第二章第三章.ppt_第4页
第4页 / 共91页
东北大学秦皇岛分校编译原理课件第二章第三章.ppt_第5页
第5页 / 共91页
点击查看更多>>
资源描述

《东北大学秦皇岛分校编译原理课件第二章第三章.ppt》由会员分享,可在线阅读,更多相关《东北大学秦皇岛分校编译原理课件第二章第三章.ppt(91页珍藏版)》请在三一办公上搜索。

1、1,第三章文法和语言,本章目的 为语言的语法描述寻求工具工具要对程序设计语言给出精确无二义的语法描述。(严谨、简洁、易读)形式工具-形式语言抽象地定义为一个数学系统。“形式”是指这样的事实:语言的所有规则只以什麽符号串能出现的方式来陈述,2,本章知识点(内容),引言和预备知识文法和语言的形式定义文法的类型上下文无关文法及其语法树上下文无关文法的句型分析有关文法实用中的一些说明,3,3.1 文法的直观概念和语言概述,当我们表述一种语言时,无非是说明这种语言的句子,如果语言只含有有穷多个句子,则只需列出句子的有穷集就行了,但对于含有无穷句子的语言来讲,存在着如何给出它的有穷表示的问题:给出一些规则

2、,用这些规则来说明(或者定义)句子的组成结构。,4,“我是大学生”。是汉语的一个句子,句子=主语谓语主语=代词名词代词=我你他名词=王明大学生工人英语谓语=动词直接宾语动词=是学习直接宾语=代词名词,5,有了一组规则以后,按照如下方式用它们导出句子:开始去找=左端的带有句子的规则并把它由=右端的符号串代替,这个动作表示成:句子 主语谓语,然后在得到的串主语谓语中,选取主语或谓语,再用相应规则的=右端代替之。比如,选取了主语,并采用规则主语=代词,那么得到:主语谓语 代词谓语,重复做下去,句子:“我是大学生”的全部动作过程是:句子 主语谓语 代词谓语 我谓语 我动词直接宾语 我是直接宾语 我是名

3、词 我是大学生,6,“我是大学生”的构成符合上述规则,而“我大学生是”不符合上述规则,我们说它不是句子。这些规则成为我们判别句子结构合法与否的依据,换句话说,这些规则看成是一种元语言,用它描述汉语。这里仅仅涉及汉语句子的结构描述。其中一种描述元语言称为文法。注:用于产生其他语言的语言称为元语言。,7,3.2 编译原理所涉及到的一些数学概念和运算,集合 笛卡儿乘积 关系 符号串,8,3.2.1 集合,概念 表示法:(1)枚举法:1,2,3(2)谓词法:x|x-32 特性:(1)唯一性(2)确定性 集合间的关系:相等、不相等、子集 集合的运算:并集、交集、差集、幂集,9,3.2.2 笛卡儿乘积,序

4、偶:由两个按一定次序排列的客体组成的序列,记为(x,y)n重序组:由n个按一定次序排列的客体组成的序列,记为(x1,x2,xn)笛卡儿乘积:A、B为任意两个集合,若序偶的第一个成员是集合A的一个元素,第二个成员是集合B的一个元素,则所有这样的序偶组成的集合称为集合A和B的笛卡儿乘积。,10,3.2.3 关系,定义 关系矩阵和关系图 关系的基本性质1、自反2、非自反3、对称4、非对称5、传递 关系的乘积 关系的传递闭包 自反传递闭包,11,3.3 有关定义和记号,符号:可以相互区别的记号(元素)。字母表:符号(元素)的非空有穷集合。符号串:由字母表中的符号组成的任何有穷序列称为该字母表上的符号串

5、。1.空符号串(没有符号的符号串)是上的符号串 2.若x是上的符号串,a是的元素,则xa是上的符号串 3.y是上的符号串,当且仅当它可以由1和2导出。例如:=a,b,a,b,aa,ab,aabba都是上的符号串,12,介绍有关符号串的一些运算,符号串的头,尾,固有头和固有尾:如果z=xy是一符号串,那么x是z的头,y是z的尾,如果x是非空的,那么y是固有尾;同样如果y非空,那么x是固有头。举个例子:设z=abc,那么z的头是,a,ab,abc,除abc外,其它都是固有头;z的尾是,c,bc,abc,z的固有尾是,c,bc。当对符号串z=xy的头感兴趣而对其余部分不感兴趣时,采用省略写法:z=x

6、;如果只是为了强调x在符号串z中的某处出现,则可表示为:z=x;符号t是符号串z的第一个符号,则表示为z=t。,13,符号串的连接:设x和y是符号串,它们的连接xy是把y的符号写在x的符号之后得到的符号串.由于 的含义,显然有 x=x=x。例如 x=ST,y=abu,则它们的连接xy=STabu,看出x=2,y=3,xy=5符号串的方幂:符号串自身连接n次得到的符号串 an 定义为 aaaa n个a a1=a,a2=aa且a0=例;若x=AB 则:x0=x1=AB x2=ABAB x3=ABABAB xn=xxn-1=xn-1 x(n0),14,符号串集合:若集合A中所有元素都是某字母表上的符

7、号串,则称A为字母表上的符号串集合。两个符号串集合A和B的乘积定义为 AB=xy|xA且yB 若 集合A=ab,cde B=0,1 则 AB=ab1,ab0,cde0,cde1使用*表示上的一切符号串(包括)组成的集合。*称为的闭包。上的除外的所有符号串组成的集合记为+。+称为的正闭包。,15,例:=a,b*=,a,b,aa,ab,ba,bb,aaa,aab,+=a,b,aa,ab,ba,bb,aaa,aab,16,有关定义和记号,语言是由句子组成的集合,是由一组符号所构成的集合。换言之,字母表上的一个语言是上的一些符号串的集合(字母表上的每个语言是*的一个子集)。例如:字母表=a,b,*=,

8、a,b,aa,ab,ba,bb,aaa,aab,集合ab,aabb,aaabbb,anbn,或表示为w|w*且w=anbn,n1为字母表上的一个语言。集合a,aa,aaa,或表示为w|w*且w=an,n1 为字母表上的一个语言。是一个语言。即 是一个语言。,17,3.4文法和语言的形式定义,语言是由句子组成的集合,是由一组符号所构成的集合。汉语-所有符合汉语语法的句子的全体英语-所有符合英语语法的句子的全体程序设计语言-所有该语言的程序的全体 每个句子构成的规律研究语言 每个句子的含义 每个句子和使用者的关系,语言概述,18,程序设计语言的概念和描述方法,程序设计语言是形式语言,其定义和描述包

9、括语法、语义和语用三个方面。程序设计语言的语法实际上是一组规则。程序设计语言的语句可分为两大类:1、非执行语句2、可执行语句 描述程序程序设计语言的语法规则的有效工具是文法中的上下文无关文法。,19,语言研究的三个方面 语法 Syntax 语义 Semantics 语用 Pragmatics语法-表示构成语言句子的各个记号之间的组合规律,即句子的组成结构。语义-表示各个记号的特定含义。(各个记号和记号所表示的对象之间的关系)语用-表示在各个记号所出现的行为中,它们的来源、使用和影响。,编译原理只讨论语言的语法和语义,20,每种语言具有两个可识别的特性,即语言的形式和该形式相关联的意义。语言的实

10、例若在语法上是正确的,其相关联的意义可以从两个观点来看,其一是该句子的创立者所想要表示的意义,另一是接收者所检验到的意义。这两个意义并非总是一样的,前者称为语言的语义,后者是其语用意义。幽默、双关语和谜语就是利用这两方面意义间的差异。,21,如果不考虑语义和语用,即只从语法这一侧面来看语言,这种意义下的语言称作形式语言。形式语言抽象地定义为一个数学系统。“形式”是指这样的事实:语言的所有规则只以什麽符号串能出现的方式来陈述。形式语言理论是对符号串集合的表示法、结构及其特性的研究。是程序设计语言语法分析研究的基础。,22,文法和语言的形式定义,如何来描述一种语言?如果语言是有穷的(只含有有穷多个

11、句子),可以将句子逐一列出来表示如果语言是无穷的,找出语言的有穷表示。语言的有穷表示有两个途经:生成方式(文法):语言中的每个句子可以用严格定义的规则来构造。识别方式(自动机):用一个过程,当输入的一任意串属于语言时,该过程经有限次计算后就会停止并回答“是”,若不属于,要麽能停止并回答“不是”,(要麽永远继续下去。),23,文法即是生成方式描述语言的:语言中的每个句子可以用严格定义的规则来构造.下面给出文法的定义.进而在文法的定义的基础上,给出推导的概念,句型、句子和语言的定义。,24,定义,文法G定义为四元组(VN,VT,P,S)其中VN为非终结符号(或语法实体,或变量)集;VT为终结符号集

12、;P为产生式(也称规则)的集合;VN,VT和P是非空有穷集。S称作识别符号或开始符号,它是一个非终结符,至少要在一条产生式中作为左部出现。VN和VT不含公共的元素,即VN VT=用V表示VN VT,称为文法G的字母表或字汇表规则,也称重写规则、产生式或生成式,是形如或=的(,)有序对,其中是字母表V的正闭包V+中的一个符号,是V*中的一个符号。称为规则的左部,称作规则的右部。,25,文法的定义,例 文法G=(VN,VT,P,S)VN=S,VT=0,1 P=S0S1,S01 S为开始符号,例 文法G=(VN,VT,P,S)VN=标识符,字母,数字VT=a,b,c,x,y,z,0,1,9P=a,z

13、 0,9 S=,27,文法的写法 1 G:SaAb Aab AaAb A 2 GS:Aab AaAb A SaSb 3 GS:Aab|aAb|SaSb,元符号:=|习惯表示 大写字母:终结符 小写字母:非终结符S ABA Ax|yB z,29,推导的定义,直接推导“”是文法G的产生式,若有v,w满足:v=,w=,其中V*,V*则称v直接推导到w,记作 v w 也称w直接归约到v例:G:S0S1,S01 0S1 00S11 00S11 000S111 000S111 00001111 S 0S1,30,.VAR;BEGIN READ()END.VAR A;BEGIN READ()END.,31,

14、推导的定义,若存在v w0 w1.wn=w,(n0)则记为v=+w,v推导出w,或w归约到v 若有v=+w,或v=w,则记为v=*w,32,例:G:S0S1,S010S1 00S1100S11 000S111000S111 00001111 S 0S1 00S11 000S111 00001111 S=+00001111 S=*S 00S11=*00S11,33,句型、句子的定义,句型有文法G,若S=*x,则称x是文法G的句型。句子有文法G,若S=*x,且xVT*,则称x是文法G的句子。例:G:S0S1,S01S 0S1 00S11 000S111 00001111G的句型S,0S1,00S1

15、1,000S111,00001111G的句子00001111,01,34,例:GE:EE+T|T TT*F|F F(E)|aEE+T T+T F+T a+T a+T*F a+F*F a+a*F a+a*a句子:用符号a,+,*,(和)构成的算术表达式,35,文法,语言的定义,由文法G生成的语言记为L(G),它是文法G的一切句子的集合:L(G)=x|S=*x,其中S为文法的开始符号,且x VT*例:G:S0S1,S01L(G)=0n1n|n1,例 文法GS:(1)SaSBE(2)SaBE(3)EBBE(4)aBab(5)bBbb(6)bEbe(7)eEee L(G)=anbnen|n1,37,S

16、 a S BE(SaSBE)a aBEBE(SaBE)aabEBE(aBab)aabBEE(EBBE)aabbEE(bBbb)aabbeE(bEbe)aabbee(eEee)G生成的每个串都在L(G)中L(G)中的每个串确实能被G生成,38,使用产生式(1)n-1次,得到推导序列:S=*an-1S(BE)n-1,然后使用产生式(2)一次,得到:S=*an-1S(BE)n-1 an(BE)n。然后从an(BE)n继续推导,总是对EB使用产生式(3)的右部进行替换,而最终在得到的串中,所有的B都先于所有的E。例如,若n=3,aaaBEBEBE aaaBBEEBE aaaBBEBEE aaaBBBE

17、EE。即有:S=*anBnEn接着,使用产生式(4)一次,得到S=*anbBn-1En,然后使用产生式(5)n-1次得到:S=*anbnEn,最后使用产生式(6)一次,使用产生式(7)n-1次,得到:S=*anbnen 也能证明,对于n1,串anbnen是唯一形式的终结符号串,39,文法的等价,若L(G1)=L(G2),则称文法G1和G2是等价的。如文法G1A:A0R 与G2S:S0S1 等价 A01 S01 RA1,40,文法的类型,通过对产生式施加不同的限制,Chomsky将文法分为四种类型:0型文法:对任一产生式,都有(VNVT)+,(VNVT)*1型文法:对任一产生式,都有|,仅仅 S

18、除外2型文法:对任一产生式,都有VN,(VNVT)*3型文法:任一产生式的形式都为AaB或Aa,其中AVN,BVN,aVT,41,文法的类型,例:1型(上下文有关)文法 文法GS:SCDAbbA CaCABaaB CbCBBbbBADaD CBDbD DAabD,42,文法的类型,例:2型(上下文无关)文法 文法GS:SABABS|0BSA|1,43,3型文法,GS:S0A|1B|0A0A|1B|0SB1B|1|0,GI:I lTI lT lTT dTT lT d,44,文法的类型,0型文法,四种文法之间的逐级“包含”关系,3型文法,45,文法和语言,0型文法产生的语言称为0型语言1型文法或上

19、下文有关文法(CSG)产生的语言称为1型语言或上下文有关语言(CSL)2型文法或上下文无关文法(CFG)产生的语言称为2型语言或上下文无关语言(CF L)3型文法或正则(正规)文法(RG)产生的语言称为3型语言正则(正规)语言(RL),46,根据形式语言理论,文法和识别系统间有这样的关系,0型文法(短语结构文法)的能力相当于图灵机,可以表征任何递归可枚举集,而且任何0型语言都是递归可枚举的 1型文法(上下文有关文法):产生式的形式为1A212,即只有A出现在1和2的上下文中时,才允许取代A。其识别系统是线性界限自动机。,47,带 a0 a1 a2 a3 a4 a5 a6 a7 a8 an-1

20、an,有限控制器,磁头,任何能用图灵机描述的计算都能机械实现,任何能在现代计算机上实现的计算都能用图灵机描述,48,2型文法(上下文无关文法CFG):产生式的形式为A,取代A时与A的上下文无关。其识别系统是不确定的下推自动机。3型文法(正规文法RG):产生的语言是有穷自动机(FA)所接受的集合,49,上下文无关文法及其语法树,上下文无关文法有足够的能力描述程序设计语言的语法结构语法树-句型推导的直观表示,50,例文法G=(E,+,*,i,(,),P,E)其中P为:Ei,EE+E,EE*E,E(E)E表示算术表达式,i表示程序的“变量”,该文法定义了由变量,+,*,(和)组成的算术表达式的语法结

21、构,即:变量是算术表达式;若E1和E2是算术表达式,则E1+E2,E1*E2和(E1)也是算术表达式描述一种简单赋值语句的产生式:赋值语句i=E描述条件语句的产生式:条件语句if条件then语句 if条件then语句else语句,51,句型、推导,GE:EE+T|T TT*F|F F(E)|aEE+T T+T F+T a+T a+T*F a+F*F a+a*F a+a*a EE+T E+T*F E+T*a E+F*a E+a*a T+a*a F+a*a a+a*aEE+T T+T T+T*F F+T*F F+F*F a+F*F a+F*a a+a*a,52,规范推导 规范句型,最左(最右)推导

22、:在推导的任何一步,其中、是句型,都是对中的最左(右)非终结符进行替换最右推导被称为规范推导。由规范推导所得的句型称为规范句型,53,语法树,设G=(VN,VT,P,S)为一上下文无关文法,若一棵树满足下列4个条件,则此树称作G的语法树(推导树)(派生树):1.每个结点都有一个标记,此标记是V的一个符号2.根的标记是S3.若一结点n至少有一个它自己除外的子孙,并且有标记A,则肯定AVN4.如果结点n有标记A,其直接子孙结点从左到右的次序是n1,n2,nk,其标记分别为A1,A2,Ak,那么AA1A2,Ak一定是P中的一个产生式语法树的结果:从左到右读出叶子的标记而构成的行谓之句型。,54,构造

23、语法树,GE:EE+T|T TT*F|F F(E)|aEE+T T+T F+T a+T a+T*F a+F*F a+a*F a+a*a,E EE+T E+T T E E+T T F,55,EE+T T+T F+T a+T a+T*F a+F*F a+a*F a+a*aEE+T E+T*F E+T*a E+F*a E+a*a T+a*a F+a*a a+a*aEE+T T+T T+T*F F+T*F F+F*F a+F*F a+F*a a+a*a,E E+T T T*F F F a a a 看不出句型中的符号被替代的顺序,56,上下文无关文法的语法树的用处,用于描述上下文无关文法句型推导的直观方

24、法,例:GS:SaASASbAASSSaAba,S a A S S b A a a b a,句型aabbaa的语法树(推导树),叶子结点:树中没有子孙的结点。从左到右读出推导树的叶子标记连接成的文法符号串,为GS的句型。也把该推导树称为该句型的语法树。,57,上下文无关文法的语法树,推导过程中施用产生式的顺序,例:GS:SaASASbAASSSaAba,S a A S S b A a a b a,SaASaAaaSbAaaSbbaaaabbaaSaASaSbASaabASaabbaSaabbaaSaASaSbASaSbAaaabAaaabbaa,58,一棵语法树表示了一个句型的种种可能的(但未

25、必是所有的)不同推导过程,包括最左(最右)推导。但是,一个句型是否只对应唯一的一棵语法树呢?一个句型是否只有唯一的一个最左(最右)推导呢?,59,例:GE:E iE E+EE E*EE(E),E E+E E*E i i i,E E*E i E+E i i,句型 i*i+i 的两个不同的最左推导:推导1:E E+E E*E+E i*E+E i*i+E i*i+i推导2:E E*E i*E i*E+E i*i+E i*i+i,60,二义文法,若一个文法存在某个句子对应两棵不同的语法树,则称这个文法是二义的或者,若一个文法存在某个句子有两个不同的最左(右)推导,则称这个文法是二义的 判定任给的一个上

26、下文无关文法是否二义,或它是否产生一个先天二义的上下文无关语言,这两个问题是递归不可解的,但可以为无二义性寻找一组充分条件,61,文法的二义性和语言的二义性是两个不同的概念。因为可能有两个不同的文法G和G,其中G是二义的,但是却有L(G)=L(G),也就是说,这两个文法所产生的语言是相同的。二义文法改造为无二义文法GE:E i GE:E T|E+T E E+E T F|T*F E E*E F(E)|i E(E)规定优先顺序和结合律 如果产生上下文无关语言的每一个文法都是二义的,则说此语言是先天二义的。对于一个程序设计语言来说,常常希望它的文法是无二义的,因为希望对它的每个语句的分析是唯一的。,

27、62,句型的分析,句型分析就是识别一个符号串是否为某文法的句型,是某个推导的构造过程。在语言的编译实现中,把完成句型分析的程序称为分析程序或识别程序。分析算法又称识别算法。从左到右的分析算法,即总是从左到右地识别输入符号串,首先识别符号串中的最左符号,进而依次识别右边的一个符号,直到分析结束。,63,句型的分析算法分类,分析算法可分为:自上而下分析法:从文法的开始符号出发,反复使用文法的产生式,寻找与输入符号串匹配的推导。自下而上分析法:从输入符号串开始,逐步进行归约,直至归约到文法的开始符号。,64,两种方法反映了两种语法树的构造过程。,自上而下方法是从文法符号开始,将它做为语法树的根,向下

28、逐步建立语法树,使语法树的结果正好是输入符号串自下而上方法则是从输入符号串开始,以它做为语法树的结果,自底向上地构造语法树,65,自上而下的语法分析,例:文法G:S cAd A ab A a识别输入串w=cabd是否为该文法的句子,SSScAdcAd a b推导过程:S cAd cAd cabd,66,自下而上的语法分析,例:文法G:S cAd A ab A a识别输入串w=cabd是否该文法的句子,SAA c a b d c a b d c a b d 规约过程构造的推导:cAd cabd S cAd,67,(1)S cAd(2)A ab(3)A a识别输入串w=cabd是否为该文法的句子自

29、上而下的语法分析,若S cAd 后选择(3)扩展A,S cAd cad那将会?w的第二个符号可以与叶子结点a得以匹配,但第三个符号却不能与下一叶子结点d匹配?宣告分析失败(其意味着,识别程序不能为串cad构造语法树,即cad不是句子)-显然是错误的结论。导致失败的原因是在分析中对A的选择不是正确的。,S c A d a,68,(1)S cAd(2)A ab(3)A a识别输入串w=cabd是否为该文法的句子自下而上的语法分析,对串cabd的分析中,如果不是选择ab用产生式(2),而是选择a用产生式(3)将a归约到了A,那么最终就达不到归约到S的结果,因而也无从知道cabd是一个句子,c a b

30、 d c A b d a,69,句型分析的有关问题,1)在自上而下的分析方法中如何选择使用哪个产生式进行推导?假定要被代换的最左非终结符号是B,且有n条规则:BA1|A2|An,那么如何确定用哪个右部去替代B?2)在自下而上的分析方法中如何识别可归约的串?在分析程序工作的每一步,都是从当前串中选择一个子串,将它归约到某个非终结符号,该子串称为“可归约串”,70,刻画“可归约串”,文法GS句型的短语S=*A且 A=+,则称是句型相对于非终结符A的短语句型的直接短语若有A,则称是句型相对于非终结符A 的直接短语句型的句柄一个句型的最左直接短语称为该句型的句柄,71,例:i*i+i 的短语、直接短语

31、和句柄,E E+T T FT*F i3 短语:i1*i2+i3,i1*i2,F i2 i1,i2,i3。i1 直接短语:i1,i2,i3。句柄:i1,GE:EE+T|T TT*F|F F(E)|i句型:i*i+i,72,G1S:S0|0A|EA|0A|1A|BB_CC0|1|0C|1CD1|1D|2DE0E2|E02,“2”是无用的,D是无用的,关于E和含有E的所有产生式都是无用的。,G2S:S0|0AA|0A|1A|BB_CC0|1|0C|1C,73,G2S:S0|0A A|0A|1A|BB_C C0|1|0C|1C,空符号串不是语言L(G2)的一个句子,G3S:S0|0A A0|1|0A|

32、1A|B B_C C0|1|0C|1C,加进了A0|1,加进了S0,产生式AB 是单一产生式,G4S:S0|0A A0|1|0A|1A|_CC0|1|0C|1C,74,化简文法文法实用中的一些说明,文法中不含有有害规则和多余规则有害规则:形如UU的产生式。会引起文法的二义性多余规则:指文法中任何句子的推导都不会用到的规则文法中不含有不可到达和不可终止的非终结符1)文法中某些非终结符不在任何规则的右部出现,该非终结符称为不可到达。2)文法中某些非终结符,由它不能推出终结符号串,该非终结符称为不可终止。,75,对于文法GS,为了保证任一非终结符A在句子推导中出现,必须满足如下两个条件:1.A必须在

33、某句型中出现 即有S=*A,其中,属于V*2.必须能够从A推出终结符号串t来 即A=*t,其中tVT*,76,化简文法,例:GS:1)SBe 2)BCe D为不可到达 3)BAf C为不可终止 4)AAe 5)Ae 6)CCf 7)Df 产生式 2),6),7)为多余规则应去掉。,77,上下文无关文法中的规则,上下文无关文法中某些规则可具有形式A,称这种规则为规则因为规则会使得有关文法的一些讨论和证明变得复杂,有时会限制这种规则的出现两种定义的唯一差别是句子在不在语言中文法构思的启示是要找出语言的有穷描述,而如果语言L有一个有穷的描述,则L1=L也同样有一个有穷的描述,并且可以证明,若L是上下

34、文有关语言、上下文无关语言或正规语言,则L和L-分别是上下文有关语言、上下文无关语言和正规语言。,78,消除单一产生式,例:算术表达式的文法GE:EE+T|ET|T TT*F|T/F|F FFP|P P(E)|N(L)|id Nsin|cos|exp|abs|log|int LL,E|E,用P(E)|N(L)|id的每个候选式去替代FP中的P,F(E)|N(L)|id,FFP|(E)|N(L)|id,以用产生式组FFP|(E)|N(L)|id去替换产生式TF,TT*F|T/F|FP|(E)|N(L)|id,用产生式组ET*F|T/F|FP|(E)|N(L)|id去替换产生式ET,79,GE:E

35、E+T|ET|T*F|T/F|FP|(E)|N(L)|idTT*F|T/F|FP|(E)|N(L)|idFFP|(E)|N(L)|idP(E)|N(L)|idNsin|cos|exp|abs|log|intLL,E|E,80,文法的其它表示方法,扩充的BNF(EBNF)语法图,81,扩充的BNF(EBNF),花括号:表示重复x表示符号串x出现0次或多次。方括号:表示选择x表示符号串x可能出现一次,也可能不出现。圆括号():公因子表示ZAB|AC可以表示为ZA(B|A),82,语法图的构造法则,(1)每一个非终结符号U连同其相应规则Ux1|x2|xn映射到一个语法图U,其结构由规则的右部按法则(

36、2)到(7)确定。,(2)在xi中每出现一个终结符号a,就对应一个识别该符号的语句,并进而去读输入符号串中的下一符号,其相应的语法图表示为:,83,(3)在xi中每出现一个非终结符号B,就对应一个识别程序B(子程序)的一次调用,其相应的语法图表示为:,(4)形如Ux1|x2|xn的规则映射到如下图中:,其中,每个xi又是应用法则(2)到(7)而得到的。,84,(5)形如xy1y2yn的规则映射到如下图中:,其中,每个yi又是应用法则(2)到(7)而得到的。,(6)形如xy的规则映射到如下图中:,其中,y又是应用法则(2)到(7)而得到的。,(7)形如xy的规则映射到如下图中:,其中,y又是应用

37、法则(2)到(7)而得到的。,85,【例】设有文法G:Ax|(B)BACC+A这是一个采用扩充的BNF表示的文法,其中,VN=A,B,CVT=+,(,),x识别符号为A。先画出非终结符号A,B,C的三条规则的语法图如下:,86,87,88,本章小结,1.本章出现的概念较多,应重点理解文法,推导,句型句子及语言的定义等概念.语法分析有关内容在后面章节会详细讨论.2.文法作为程序语言的语法的描述工具,它用规则只能陈述的是:语言的所有句子以什麽样的符号串能出现.请记住文法和语言的形式定义中的“形式”的含义只涉及语言的语法不涉及语言的语义.3.本章内容是形式语言理论的一部分.形式语言理论是对符号串集合

38、的表示法、结构及其特性的研究。是程序设计语言语法分析研究的基础。,本章小结考察本章知识点最典型的题目是 1.已知文法GA,写出它定义的语言描述 如:GA:A 0B|1C B 1|1A|0BB C 0|0A|1CC答案:GA定义的语言由0、1符号串组成,串中0和1的个数相同.2.给出语言描述,构造文法.如:构造一文法,其定义的语言是由算符+,*,(,)和运算对象a构成的算术表达式的集合.答案1:GE EE+T|T TT*F|F F(E)|a答案2:GE EE+E|E*E|(E)|a,90,练习,1.写一文法,使其语言是偶正整数的集合。要求:允许0打头(2)不允许0打头2.证明下述文法G表达式是二义的。表达式=a|(表达式)|表达式运算符表达式运算符=+|-|*|/3.令文法GE为:ET|E+T|E-TTF|T*F|T/FF(E)|i证明E+T*F是它的一个句型,指出这个句型的所有短语、直接短语和句柄。,91,练习,4.给出生成下述语言的上下文无关文法:(1)anbnambm|n,m=0(2)1n0m 1m0n|n,m=0 5.给出生成下述语言的三型文法:(1)anbm|n,m=1(2)anbmck|n,m,k=0 6.给出下述文法所对应的正规式:S0A|1BA1S|1B0S|0,

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

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


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号