收藏 分销(赏)

二文法和语言PPT课件.ppt

上传人:可**** 文档编号:799447 上传时间:2024-03-21 格式:PPT 页数:69 大小:376.50KB
下载 相关 举报
二文法和语言PPT课件.ppt_第1页
第1页 / 共69页
二文法和语言PPT课件.ppt_第2页
第2页 / 共69页
二文法和语言PPT课件.ppt_第3页
第3页 / 共69页
二文法和语言PPT课件.ppt_第4页
第4页 / 共69页
二文法和语言PPT课件.ppt_第5页
第5页 / 共69页
点击查看更多>>
资源描述

1、第二章 文法和语言学习目标:q掌握:自上而下与自下而上的分析思想q理解:文法的形式定义,推导,归约,句型,句子,语言,上下文无关文法,规范句型,语法树,短语,直接短语,句柄q了解:文法的类型,文法实用中的限制,文法的二义性1 1.2.1语言和文法的直观概念2.2符号和符号串2.3文法和语言的形式定义2.4文法的类型2.5上下文无关文法及其语法树2.6句型的分析2 2.2.2.1 1 语言和文法的直观概念1.程序设计语言的直观定义程序设计语言是一个记号系统,它的定义包括语法和语义。q语法(syntax)定义:是一组规则,用它可以形成和产生一个合适的程序描述工具:文法作用:定义什么样的符号序列是合

2、法的,与符号的含义无关。3 3.q语义(semantics)分类:静态语义:一系列限定规则,确定哪些合乎语法的程序是合适的动态语义:表明程序要做什么描述工具:指称语义,操作语义等作用:检查类型匹配,变量作用域等4 4.2.2.文法的直观概念如何来描述一种语言?如果语言是有穷的(只含有有穷多个句子),可以将句子逐一列出来表示如果语言是无穷的,要找出语言的有穷表示。有两个途经:1.生成方式(文法):语言中的每个句子可以用严格定义的规则来构造2.识别方式(自动机):用一个过程,当输入的一任意串属于语言时,该过程经有限次计算后就会停止并回答“是”,若不属于,要么能停止并回答“不是”,要么永远继续下去。

3、5 5.q文法:是语言语法的描述工具,实现用有穷的规则把语言的无穷句子集描述出来。6 6.例:“我是大学生”是汉语的一个句子汉语句子的构成规则表示如下:句子=主语谓语主语=代词名词代词=我你他名词=王明大学生工人英语谓语=动词直接宾语动词=是学习直接宾语=代词名词7 7.例:“(34-3)*42”是一个表达式表达式的构成规则表示如下:Exp Exp=Exp op Exp|(Exp)|NumberExp op Exp|(Exp)|NumberOp Op =+|*+|*8 8.q由规则推导句子方法:用一条规则=的右端符号串代替:=:=的左端.表示:用“=”表示推导,含义是,使用一条规则,代替=左边

4、的某个符号,产生=右端的符号串.9 9.例如:句子“我是大学生”的推导过程如下:句子 主语谓语 代词谓语 我谓语 我动词直接宾语 我是直接宾语 我是名词 我是大学生1010.q文法的作用严格定义句子的结构,是判断句子结构合法与否的依据用有穷的规则把无穷的句子集合描述出来1111.2.2.2 2 符号和符号串1.1.字母表定义:元素的非空有穷集合例:=01 =ab,c元素也称为符号,字母表也称符号集。程序语言的字母表由字母数字和若干专用符号组成。1212.2.2.符号串定义:由字母表中的符号组成的任何有穷序列例:0,00,10是字母表=01上的符号串 a,ab,aaca是=ab,c上的符号串在符

5、号串中,符号是有顺序的,顺序不同,代表不同的符号串,如:ab和ba不同不含任何符号的符号串称为空串,用表示注意:并不等于空集合 符号串长度:符号串中含有符号的个数如:|abc|=3|=0 1313.3.符号串的运算符号串的连接:设x、y是符号串,它们的连接是把y的符号写在 x的符号之后得到的符号串xy例如 x=ST,y=abu 则 xy=STabu 显然x=x=x符号串的方幂:把符号串a a自身连接n n次得到的符号串a an n=aaaaaaaa例如 a a1 1=a a=a a2 2=aa a=aa a0 0=1414.4.4.符号串集合:定义:若集合A A中所有元素都是某字母表 上的符号

6、串,则称A A为字母表 上的符号串集合。符号串集合的乘积:符号串集合A和B的乘积定义为:AB=xy|x A且y B,即AB是由A中的串x和B中的串y连接而成的串xy组成的集合。若集合A=ab,cdeab,cde B=0,10,1 则 AB=ab0,ab1,cde0,cde1ab0,ab1,cde0,cde1 显然A=A=A1515.符号串集合的方幂:设A A是符号串的集合,则称A Ai i为符号串集A A的方幂,其中i i是非负整数。具体定义如下:A A0 0=A A1 1 =A ,A=A ,A2 2 =A A=A AA AK K=AA.A(k=AA.A(k个)1616.5.集合的闭包闭包集合

7、的闭包*定义如下:*=0 1 2 3 例:设有字母表=0,1则*=0 1 2=,0,1,00,01,10,11,000,即*表示上所有有穷长的串的集合。1717.正闭包+=1 2 3 称为的正闭包。+表示 上的除外的所有用穷长串的集合*=0 +=*=*1818.字母表 上的一个语言是 上的一些符号串的集合 即是*的一个子集例如:=a,b=a,b*=,a,b,aa,ab,ba,bb,aaa,aab,=,a,b,aa,ab,ba,bb,aaa,aab,1.集合 ab,aabb,aaabbb,ab,aabb,aaabbb,a,an nb bn n,或 w|ww|w*且w=aw=an nb bn n,

8、n1,n1为字母表 上的一个语言。2.集合 a,aa,aaa,a,aa,aaa,或 w|ww|w*且w=aw=an n,n1,n1为字母表 上的一个语言3.3.是一个语言4.即 是一个语言。1919.2.3文法和语言的形式定义1文法的定义2文法的简化表示法3推导与归约4句型、句子、语言的定义5文法的等价2020.1文法的定义q产生式(规则)产生式是一个有序对(,),通常写作(或:=)q文法定义:文法G(Grammar)定义为四元组(VN,VT,P,S)VN(Nonternimal):非终结符集VT(Terminal):终结符集P(Production):产生式(规则)集合S(Start Sym

9、bol):开始符号或识别符号2121.q说明:V=VN VT,V称为文法G的字母表P中产生式形如:,其中 V+且至少含一个非终结符,V*VN,VT和P是非空有穷集VNVT=S是一个非终结符,且至少要在一条产生式的左部出现汉语句子的构成规则表示如下:句子=主语谓语主语=代词名词代词=我你他名词=王明大学生工人英语谓语=动词直接宾语动词=是学习直接宾语=代词名词2222.例1:文法G=(VN,VT,P,S)其中VN=S,VT=0,1,P=S-0S1,S-01,开始符为S例2:文法G=(VN,VT,P,S)VN=标识符,字母,数字,VT=a,b,c,x,y,z,0,1,9P=,a,z z,0,0,9

10、9 ,S=2323.2文法的简化表示法q简化:通常不用将文法的四元组表示出来,只写出产生式q约定:第一条产生式的左部是开始符号或用GS表示S是开始符号用大写字母(或用尖括号括起来)表示非终结符用小写字母表示终结符左部相同的产生式A-,A-可以记为A-|,其中“|”是“或”的意思,,分别称为侯选式2424.q例如:文法GS:S-A|SA|SDA-a|b|zD-0|1|92525.3.推导(Derivation)与归约(Reduction)q直接推导和直接归约:是文法G G的产生式,若有v v,w w满足:v=v=,w=,w=,其中,V,V*则称v v直接推导到w,w,也称w w直接归约到v,v,

11、记作 v v w w直接推导就是用产生式的右部替换产生式的左部的过程直接归约就是用产生式的左部替换产生式的右部的过程2626.例 文法G G:S0S1 S0S1,S01 S01 有直接推导:0 0S S1 1 0 00S10S11 1(S0S1S0S1 )0000S S11 11 00000S10S11111(S0S1S0S1 )000000S S111 111 0000000101111111(S01 S01)S S 0S10S1(S0S1S0S1 )2727.q推导和归约若存在v=wv=w0 0 w w1 1 .w wn n=w,(n0)=w,(n0)则称v v推导出w w,或w w归约到

12、v,v,记为v=v=+w w若有v=v=+w w,或v=wv=w,则记作v=v=*w w2828.例 文法G G:S0S1 S0S1,S01 S01 S S 0 0S S1 1 0 00 0S S1 11 1 00000 0S S1 111 11 0000000101111 111 S=S=+0000111100001111S=S=*0000111100001111 S S=*S S 2929.q规范推导如果在推导的任何一步,都是对中的最左(最右)非终结符进行替换,则称这种推导为最左(最右)推导最右推导被称为规范推导例如:句子“我是大学生”的推导过程如下:句子 主语谓语 代词谓语 我谓语 我动

13、词直接宾语 我是直接宾语 我是名词 我是大学生3030.q例 文法G:EE+T|T TTF|F F(E)|i“i+ii”的推导过程如下:最左推导:E=E+T=T+T=F+T=i+T=i+TF=i+FF =i+iF=i+ii最右推导:E=E+T=E+TF=E+Ti=E+Fi=E+ii =T+ii=F+ii=i+ii3131.4句型、句子、语言的定义q句型和句子设有文法GSGS,若符号串x x是从开始符推导出来的,即S S=*x x,则称x x是文法G G的句型若x x仅由终结符组成,即S S=*x x,且xVxVT T*,则称x x是文法G G的句子由规范推导所得的句型称为规范句型 例 文法GS

14、GS:S0S1 S0S1,S01 S01S S 0 0S S1 1 0 00 0S S1 11 1 00000 0S S1 111 11 0000000101111111S,S,0S1,00S11,000S111,000011110S1,00S11,000S111,00001111都是G G的句型0000111100001111是G G的句子3232.提问以下哪个符号串是文法的句子3333.q语言的定义由文法G G生成的语言记为L(G),L(G),它是文法G G的一切句子的集合,即 L(G)=x|S L(G)=x|S=*x x,其中S S为文法的开始符号,且x Vx VT T*例 文法G G:

15、S0S1 S0S1,S01 S01S0S1 00S11 03S13 0n-1S1n-1 0n1nL(G)=0L(G)=0n n1 1n n|n1|n13434.根据文法,可以通过推导得到该文法相应的语言;例:GE E:EE+T|TEE+T|TTTF|FTTF|F F(E)|aF(E)|aE E E+T T+T F+T a+T a+TF a+FF a+aF a+aa表示一切能用符号a,+,(和)构成的算术表达式有了语言的要求,也可以为该语言设计文法例:若语言由0、1符号串组成,串中0和1的个数相同,构造其文法为:A 0B|1CB 1|1A|0BBC 0|0A|1CC3535.提问根据文法,可以通

16、过推导得到该文法相应的语言;S S+a|aS S+a|a有了语言的要求,也可以为该语言设计文法 L(G)=a,(a),(a),(a),3636.5文法的等价若L L(G G1 1)=L=L(G G2 2),则称文法G G1 1和G G2 2是等价的。例如 文法G G1 1AA:A0R A01 RA1A0R A01 RA1 G G2 2SS:S0S1 S01S0S1 S01所定义的语言都是0 0n n1 1n n两文法等价3737.2.2.4 4 文法的类型通过对产生式施加不同的限制,Noam Chomsky Noam Chomsky将文法分为 四种类型:q0 0型文法(短语文法):对任一产生式

17、,都有(V(VN NVVT T)*且至少含有一个非终结符,(V(VN NVVT T)*3838.q1 1型文法(上下文有关):它是0型文法的特例,设文法G=(VN,VT,P,S),对P P中的任一产生式,都有|,仅仅 SS除外例 文法GSGS:S-aSBAS-aSBAAAAA-AB-ABBA-BABA-BAS-abBS-abBbA-bbbA-bbBABA-AA-AA 1型文法产生式的一般形式是 A,,V V*,AVAVN N,VV ,它表示当A的上文为 且下文为 时可把A替换成,因此称1型文法为上下文有关文法。3939.q2 2型文法(上下文无关文法):它是1型文法的特例,对任一产生式,都有V

18、VN N ,(V(VN NVVT T)*例 文法GSGS:SABSABABS|0ABS|0BSA|1BSA|12型文法产生式的一般形式是:A,它表示不管A的上下文如何即可把A替换成,因此被称为上下文无关文法。产生式A称为规则通常程序设计语言的文法,可用2型文法来描述,因此我们重点研究2型文法。4040.q3 3型文法(正规文法):它是2 2型文法的特例,任一产生式的形式都为AaBAaB或AaAa,其中A A,BVBVN N ,aVaVT T例如 文法GSGS:S0A|1B|0S0A|1B|0A0A|1B|0SA0A|1B|0SB1B|1|0B1B|1|0在程序设计语言中,3型文法通常用来描述单

19、词的结构。4141.文法类别产生式形式产生的语言 说明0型文法(短语文法)VV+,且至少含一个非终结符,VV*0型语言对产生式基本无限制1型文法(上下文有关文法),|1|1或 A,V V*AVAVN N,VV1型语(上下文有关语言)将A替换成 时,必须考虑A的上下文,2型文法(上下文无关文法)AA,AVAVN N ,VV*2型语(上下文无关语言)无需考虑A在上下文中的出现情况3型文法(正规文法)AaBAaB或AaAa,A,BVA,BVN N ,aVaVT T3型语(正规语言)产生式全部是规定的形式4242.四种文法之间的逐级“包含”关系2型文法1型文法3型文法0型文法4343.2.5上下文无关

20、文法及其语法树1上下文无关文法(Context-Free Grammar)上下文无关文法有足够的能力描述现今程序设计语言的语法结构例:算术表达式:Ei|E+E|E*E|(E)-i:=E-if then|if then else 所以我们只关心上下文无关文法形成的语言的句子的分析和分析方法4444.2.语法树(推导树Parse Tree)q作用:直观地描述上下文无关文法的句型推导过程。给定文法G=(VG=(VN N,V,VT T,P,S),P,S),对于G G的任何句型都能构造与之关联的语法树4545.q例:文法G:EE+T|TTTF|F F(E)|i句型T+TF的推导过程与语法树EET+TFT

21、E=E+TEET+TFTE=E+T=E+TF=T+TF=T+T=T+TF从语法树中看不出句型中的符号被替代的顺序从左到右读出叶子结点得到的符号串,为文法的句型。也把该语法树称为该句型的语法树。4646.q语法树定义:给定文法G=(G=(V VN N,V,VT T,P,S),P,S),若一棵树满足下列4 4个条件,则称此树为G G的语法树:1.1.每个结点都有一个标记,此标记是V V的一个符号2.2.根的标记是S S3.3.若一结点n n至少有一个它自己除外的子孙,并且有标记A A,则肯定AVAVN N4.4.如果结点n n有标记A,A,其直接子孙结点从左到右的次序是n n1 1,n n2 2,

22、n nk k,其标记分别为A A1 1,A A2 2,A Ak k,那么AAAA1 1A A2 2A Ak k一定是P P中的一个产生式4747.q语法树和推导的关系句型的每个推导都产生相应的一棵语法树一个句型的不同推导产生相同的语法树每棵语法树对应唯一的最左推导或最右推导通常,一个句型有唯一的语法树、最左推导和最右推导,它们代表了句型的语法结构,但是一个句型可以有多个不同的推导,它不能代表句型的语法结构4848.EET+TFTE=E+T=T+T=T+TFE=E+T=E+TF=T+TF3.文法的二义性(Ambiguity)通常,一个句型对应一棵语法树,它表示该句型的不同推导过程句型“T+T F

23、”对应的语法树:4949.文法G:EE+E|EE|(E)|i句子 ii+i 对应的语法树两个不同的最左推导:推导1:E E+E EE+E iE+E ii+E ii+i推导2:E EE iE iE+E ii+E ii+iiEE+EEEiiEEEiEE+ii5050.q二义性:如果一个文法存在某个句子对应两棵不同的语法树,则说这个文法是二义的二义性文法存在某个句子,它有两个不同的最左(右)推导对于一个程序设计语言来说,希望它的文法是无二义的,因为希望对它的每个语句的分析是唯一的。5151.q构造无二义性文法文法G:E E+E|EE|(E)|i文法G:E-T|E+TT-F|TFF-(E)|i等价的无

24、二义文法句子 ii+i 对应的语法树FET+ETFiFTii5252.2.6 句型的分析q任务:句型分析就是识别一个符号串是否为某文法的句型,是某个推导的构造过程。对于程序设计语言来说,句型分析就是一个识别输入符号串是否为语法上正确的程序的过程。5353.q从左到右的分析算法,即总是从左到右地识别输入符号串.句型分析算法采用从左到右的分析算法q句型的分析算法分类自上而下分析法(Top-Down parsing)自下而上分析法(Bottom-Up parsing)5454.2.6.1自上而下的分析方法q定义:从文法的开始符号出发,反复使用文法的产生式,寻找与输入符号串匹配的推导。语法树的构造:将

25、文法的开始符号作为语法树的根,向下逐步建立语法树,使语法树的末端结点符号串正好是输入符号串。5555.例 文法G:S cAd A ab A a识别输入串w=cabd是否为该文法的句子S推导过程:cAdab=cabdS=cAd5656.q自上而下方法的主要问题对输入串cabd自上而下构造语法树的另一过程不成功,不成功的原因是选错产生式Aa自上而下分析的主要问题是选择产生式 :假定要被代换的最左非终结符号是B B,且有n n条规则:BA1|A2|BA1|A2|An|An,那么如何确定用哪个右部去替代B B?ScA da5757.2.6.2自下而上的分析方法q定义:从输入符号串开始,利用文法的产生式

26、逐步进行归约,试图归约到文法的开始符号。语法树的构造:从输入符号串开始,以它作为语法树的末端结点符号串,自底向上的构造语法树,使文法开始符正好是该语法树的根。如果最终根结点是开始符,则输入符号串是语言的一个句子,否则不是。5858.例 文法G:S cAd A ab A a识别输入串w=cabd是否为该文法的句子cabd归约过程:用“|-”表示归约,下划线部分为被归约符号cabd|-cAd|-SAS5959.q自下而上分析的主要问题对输入串cabd的两种归约过程(1)cabd|-cAd|-S 归约到开始符(2)cabd|-cAbd 不能归约到开始符在自下而上的分析方法中,每一步都是从当前串中选择

27、一个子串加以归约,该子串暂称“可归约串”。如何确定“可归约串”是自下而上分析的主要问题。6060.不同的确定“可归约串”的方法,形成了不同的自下而上分析方法在一种“规范归约”方法中,“可归约串”被称为“句柄”6161.q短语,直接短语和句柄定义:设是文法GS中的一个句型,如果有S=*A且A=+,则称是句型相对于非终结符A的短语特别的如有A=,则称是句型相对于规则A的直接短语。一个句型的最左直接短语称为该句型的句柄(Handle)。SASA6262.对定义的分析:在短语的定义中包括了三个条件:是文法的一个句型;S=*A;A=+。SA这三个条件都必须满足。(1)(2)说明、A都必须是句型(2)(3

28、)说明,将中的归约称A后,得到的A一定要是句型。假如符号串,将其归约成A后得到的符号串不能由开始符号推出,则不是短语。6363.例:文法GE:EE+T|T TTF|F F(E)|i的一个句型 是TF+i,相应的语法树见右图:EET+TTFFi1因为E=*Ti且T=TF,所以T F是句型相对于T的短语,且是相对于 T-T F的直接短语2因为E=*T F+F且F=i,所以i是句型相对于F的短语,且是相对于F-i的直接短语3因为E=*E且E=+T F+i,所以T F+i是句型相对于E的短语4T F是最左直接短语,即句柄 6464.文法GE:EE+T|TTTF|FF(E)|i的一个句型 是TF+iEE

29、T+TTFFi虽然F+i是句型TF+i的一部分,但不是短语,因为尽管有E=+F+i,但是不存在从文法开始符E=*TE的推导6565.q短语与语法树从句型的语法树上很容易找出句型的短语语法树中每棵子树的末端结点构成相对于子树根的短语 例:文法GE的句型T*F+i语法树:EET+TTF*Fi五棵子树对应三个短语T*F,i,T*F+i两层子树的末端结点构成直接短语 两棵两层子树对应两个直接短语:T*F,i位于最左边的两层子树的末端结点构成句柄:T*F 6666.本章小结本章出现的概念较多,应重点理解文法,语言,推导,句型句子及句柄等概念。本章的内容是学习语法分析的基础6767.作业P3411.一个上下文无关文法生成句子abbaa的推导树如下:(1)给出该句子相应的最左推导,最右推导。(2)给出该文法的产生式集合P可能有哪些元素?(3)找出该句子的所有短语,简单短语,句柄。6868.作业P3515 分以下两种情形,各写一个文法,使其语言是十进制非负偶数的集合:(1)允许0打头;(2)不允许0打头。6969.

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服