




已阅读5页,还剩64页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.,1,第二章文法和语言,学习目标:掌握:自上而下与自下而上的分析思想理解:文法的形式定义,推导,归约,句型,句子,语言,上下文无关文法,规范句型,语法树,短语,直接短语,句柄了解:文法的类型,文法实用中的限制,文法的二义性,.,2,2.1语言和文法的直观概念2.2符号和符号串2.3文法和语言的形式定义2.4文法的类型2.5上下文无关文法及其语法树2.6句型的分析,.,3,2.1语言和文法的直观概念,程序设计语言的直观定义程序设计语言是一个记号系统,它的定义包括语法和语义。语法(syntax)定义:是一组规则,用它可以形成和产生一个合适的程序描述工具:文法作用:定义什么样的符号序列是合法的,与符号的含义无关。,.,4,语义(semantics)分类:静态语义:一系列限定规则,确定哪些合乎语法的程序是合适的动态语义:表明程序要做什么描述工具:指称语义,操作语义等作用:检查类型匹配,变量作用域等,.,5,文法的直观概念,如何来描述一种语言?如果语言是有穷的(只含有有穷多个句子),可以将句子逐一列出来表示如果语言是无穷的,要找出语言的有穷表示。有两个途经:生成方式(文法):语言中的每个句子可以用严格定义的规则来构造识别方式(自动机):用一个过程,当输入的一任意串属于语言时,该过程经有限次计算后就会停止并回答“是”,若不属于,要么能停止并回答“不是”,要么永远继续下去。,.,6,文法:是语言语法的描述工具,实现用有穷的规则把语言的无穷句子集描述出来。,.,7,例:“我是大学生”是汉语的一个句子汉语句子的构成规则表示如下:句子=主语谓语主语=代词名词代词=我你他名词=王明大学生工人英语谓语=动词直接宾语动词=是学习直接宾语=代词名词,.,8,例:“(34-3)*42”是一个表达式表达式的构成规则表示如下:Exp=ExpopExp|(Exp)|NumberOp=+|*,.,9,由规则推导句子,方法:用一条规则=的右端符号串代替:=的左端.表示:用“=”表示推导,含义是,使用一条规则,代替=左边的某个符号,产生=右端的符号串.,.,10,例如:句子“我是大学生”的推导过程如下:句子主语谓语代词谓语我谓语我动词直接宾语我是直接宾语我是名词我是大学生,.,11,文法的作用严格定义句子的结构,是判断句子结构合法与否的依据用有穷的规则把无穷的句子集合描述出来,.,12,2.2符号和符号串,字母表定义:元素的非空有穷集合例:=01=ab,c元素也称为符号,字母表也称符号集。程序语言的字母表由字母数字和若干专用符号组成。,.,13,符号串定义:由字母表中的符号组成的任何有穷序列例:0,00,10是字母表=01上的符号串a,ab,aaca是=ab,c上的符号串在符号串中,符号是有顺序的,顺序不同,代表不同的符号串,如:ab和ba不同不含任何符号的符号串称为空串,用表示注意:并不等于空集合符号串长度:符号串中含有符号的个数如:|abc|=3|=0,.,14,符号串的运算符号串的连接:设x、y是符号串,它们的连接是把y的符号写在x的符号之后得到的符号串xy例如x=ST,y=abu则xy=STabu显然x=x=x符号串的方幂:把符号串a自身连接n次得到的符号串an=aaaa例如a1=aa2=aaa0=,.,15,符号串集合:定义:若集合A中所有元素都是某字母表上的符号串,则称A为字母表上的符号串集合。符号串集合的乘积:符号串集合A和B的乘积定义为:AB=xy|xA且yB,即AB是由A中的串x和B中的串y连接而成的串xy组成的集合。若集合A=ab,cdeB=0,1则AB=ab0,ab1,cde0,cde1显然A=A=A,.,16,符号串集合的方幂:设A是符号串的集合,则称Ai为符号串集A的方幂,其中i是非负整数。具体定义如下:A0=A1=A,A2=AAAK=AA.A(k个),.,17,集合的闭包闭包集合的闭包*定义如下:*=0123例:设有字母表=0,1则*=012=,0,1,00,01,10,11,000,即*表示上所有有穷长的串的集合。,.,18,正闭包+=123称为的正闭包。+表示上的除外的所有用穷长串的集合*=0+=*=*,.,19,字母表上的一个语言是上的一些符号串的集合即是*的一个子集例如:=a,b*=,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为字母表上的一个语言是一个语言即是一个语言。,.,20,2.3文法和语言的形式定义,1文法的定义2文法的简化表示法3推导与归约4句型、句子、语言的定义5文法的等价,.,21,1文法的定义,产生式(规则)产生式是一个有序对(,),通常写作(或:=)文法定义:文法G(Grammar)定义为四元组(VN,VT,P,S)VN(Nonternimal):非终结符集VT(Terminal):终结符集P(Production):产生式(规则)集合S(StartSymbol):开始符号或识别符号,.,22,说明:V=VNVT,V称为文法G的字母表P中产生式形如:,其中V+且至少含一个非终结符,V*VN,VT和P是非空有穷集VNVT=S是一个非终结符,且至少要在一条产生式的左部出现,汉语句子的构成规则表示如下:句子=主语谓语主语=代词名词代词=我你他名词=王明大学生工人英语谓语=动词直接宾语动词=是学习直接宾语=代词名词,.,23,例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,0,9,S=,.,24,2文法的简化表示法,简化:通常不用将文法的四元组表示出来,只写出产生式约定:第一条产生式的左部是开始符号或用GS表示S是开始符号用大写字母(或用尖括号括起来)表示非终结符用小写字母表示终结符左部相同的产生式A-,A-可以记为A-|,其中“|”是“或”的意思,,分别称为侯选式,.,25,例如:文法GS:S-A|SA|SDA-a|b|zD-0|1|9,.,26,3.推导(Derivation)与归约(Reduction),直接推导和直接归约:是文法G的产生式,若有v,w满足:v=,w=,其中,V*则称v直接推导到w,也称w直接归约到v,记作vw直接推导就是用产生式的右部替换产生式的左部的过程直接归约就是用产生式的左部替换产生式的右部的过程,.,27,例文法G:S0S1,S01有直接推导:0S100S11(S0S1)00S11000S111(S0S1)000S11100001111(S01)S0S1(S0S1),.,28,推导和归约若存在v=w0w1.wn=w,(n0)则称v推导出w,或w归约到v,记为v=+w若有v=+w,或v=w,则记作v=*w,.,29,例文法G:S0S1,S01S0S100S11000S11100001111S=+00001111S=*00001111S=*S,.,30,规范推导如果在推导的任何一步,都是对中的最左(最右)非终结符进行替换,则称这种推导为最左(最右)推导最右推导被称为规范推导,例如:句子“我是大学生”的推导过程如下:句子主语谓语代词谓语我谓语我动词直接宾语我是直接宾语我是名词我是大学生,.,31,例文法G:EE+T|TTTF|FF(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+ii,.,32,4句型、句子、语言的定义,句型和句子设有文法GS,若符号串x是从开始符推导出来的,即S=*x,则称x是文法G的句型若x仅由终结符组成,即S=*x,且xVT*,则称x是文法G的句子由规范推导所得的句型称为规范句型例文法GS:S0S1,S01S0S100S11000S11100001111S,0S1,00S11,000S111,00001111都是G的句型00001111是G的句子,.,33,提问,以下哪个符号串是文法的句子,.,34,语言的定义由文法G生成的语言记为L(G),它是文法G的一切句子的集合,即L(G)=x|S=*x,其中S为文法的开始符号,且xVT*例文法G:S0S1,S01S0S100S1103S130n-1S1n-10n1nL(G)=0n1n|n1,.,35,根据文法,可以通过推导得到该文法相应的语言;例:GE:EE+T|TTTF|FF(E)|aEE+TT+TF+Ta+Ta+TFa+FFa+aFa+aa表示一切能用符号a,+,(和)构成的算术表达式有了语言的要求,也可以为该语言设计文法例:若语言由0、1符号串组成,串中0和1的个数相同,构造其文法为:A0B|1CB1|1A|0BBC0|0A|1CC,.,36,提问根据文法,可以通过推导得到该文法相应的语言;SS+a|a有了语言的要求,也可以为该语言设计文法L(G)=a,(a),(a),(a),.,37,5文法的等价,若L(G1)=L(G2),则称文法G1和G2是等价的。例如文法G1A:A0RA01RA1G2S:S0S1S01所定义的语言都是0n1n两文法等价,.,38,2.4文法的类型,通过对产生式施加不同的限制,NoamChomsky将文法分为四种类型:0型文法(短语文法):对任一产生式,都有(VNVT)*且至少含有一个非终结符,(VNVT)*,.,39,1型文法(上下文有关):它是0型文法的特例,设文法G=(VN,VT,P,S),对P中的任一产生式,都有|,仅仅S除外例文法GS:S-aSBAAA-ABBA-BAS-abBbA-bbBA-AA1型文法产生式的一般形式是A,,V*,AVN,V,它表示当A的上文为且下文为时可把A替换成,因此称1型文法为上下文有关文法。,.,40,2型文法(上下文无关文法):它是1型文法的特例,对任一产生式,都有VN,(VNVT)*例文法GS:SABABS|0BSA|12型文法产生式的一般形式是:A,它表示不管A的上下文如何即可把A替换成,因此被称为上下文无关文法。产生式A称为规则通常程序设计语言的文法,可用2型文法来描述,因此我们重点研究2型文法。,.,41,3型文法(正规文法):它是2型文法的特例,任一产生式的形式都为AaB或Aa,其中A,BVN,aVT例如文法GS:S0A|1B|0A0A|1B|0SB1B|1|0在程序设计语言中,3型文法通常用来描述单词的结构。,.,43,四种文法之间的逐级“包含”关系,.,44,2.5上下文无关文法及其语法树,1上下文无关文法(Context-FreeGrammar)上下文无关文法有足够的能力描述现今程序设计语言的语法结构例:算术表达式:Ei|E+E|E*E|(E)-i:=E-ifthen|ifthenelse所以我们只关心上下文无关文法形成的语言的句子的分析和分析方法,.,45,2.语法树(推导树ParseTree)作用:直观地描述上下文无关文法的句型推导过程。给定文法G=(VN,VT,P,S),对于G的任何句型都能构造与之关联的语法树,.,46,例:文法G:EE+T|TTTF|FF(E)|i句型T+TF的推导过程与语法树,E=E+T,E=E+T,=E+TF,=T+TF,=T+T,=T+TF,从语法树中看不出句型中的符号被替代的顺序,从左到右读出叶子结点得到的符号串,为文法的句型。也把该语法树称为该句型的语法树。,.,47,语法树定义:给定文法G=(VN,VT,P,S),若一棵树满足下列4个条件,则称此树为G的语法树:每个结点都有一个标记,此标记是V的一个符号根的标记是S若一结点n至少有一个它自己除外的子孙,并且有标记A,则肯定AVN如果结点n有标记A,其直接子孙结点从左到右的次序是n1,n2,nk,其标记分别为A1,A2,Ak,那么AA1A2Ak一定是P中的一个产生式,.,48,语法树和推导的关系句型的每个推导都产生相应的一棵语法树一个句型的不同推导产生相同的语法树每棵语法树对应唯一的最左推导或最右推导通常,一个句型有唯一的语法树、最左推导和最右推导,它们代表了句型的语法结构,但是一个句型可以有多个不同的推导,它不能代表句型的语法结构,.,49,3.文法的二义性(Ambiguity),通常,一个句型对应一棵语法树,它表示该句型的不同推导过程,句型“T+TF”对应的语法树:,.,50,文法G:EE+E|EE|(E)|i句子ii+i对应的语法树,两个不同的最左推导:推导1:EE+EEE+EiE+Eii+Eii+i推导2:EEEiEiE+Eii+Eii+i,.,51,二义性:如果一个文法存在某个句子对应两棵不同的语法树,则说这个文法是二义的二义性文法存在某个句子,它有两个不同的最左(右)推导对于一个程序设计语言来说,希望它的文法是无二义的,因为希望对它的每个语句的分析是唯一的。,构造无二义性文法,文法G:EE+E|EE|(E)|i,文法G:E-T|E+TT-F|TFF-(E)|i,句子ii+i对应的语法树,.,53,2.6句型的分析,任务:句型分析就是识别一个符号串是否为某文法的句型,是某个推导的构造过程。对于程序设计语言来说,句型分析就是一个识别输入符号串是否为语法上正确的程序的过程。,.,54,从左到右的分析算法,即总是从左到右地识别输入符号串.句型分析算法采用从左到右的分析算法句型的分析算法分类自上而下分析法(Top-Downparsing)自下而上分析法(Bottom-Upparsing),.,55,2.6.1自上而下的分析方法,定义:从文法的开始符号出发,反复使用文法的产生式,寻找与输入符号串匹配的推导。语法树的构造:将文法的开始符号作为语法树的根,向下逐步建立语法树,使语法树的末端结点符号串正好是输入符号串。,.,56,例文法G:ScAdAabAa识别输入串w=cabd是否为该文法的句子,S,推导过程:,=cabd,S,=cAd,.,57,自上而下方法的主要问题对输入串cabd自上而下构造语法树的另一过程,不成功,不成功的原因是选错产生式Aa,自上而下分析的主要问题是选择产生式:假定要被代换的最左非终结符号是B,且有n条规则:BA1|A2|An,那么如何确定用哪个右部去替代B?,S,.,58,2.6.2自下而上的分析方法,定义:从输入符号串开始,利用文法的产生式逐步进行归约,试图归约到文法的开始符号。语法树的构造:从输入符号串开始,以它作为语法树的末端结点符号串,自底向上的构造语法树,使文法开始符正好是该语法树的根。如果最终根结点是开始符,则输入符号串是语言的一个句子,否则不是。,.,59,例文法G:ScAdAabAa识别输入串w=cabd是否为该文法的句子,归约过程:,用“|-”表示归约,下划线部分为被归约符号,cabd,|-cAd,|-S,.,60,自下而上分析的主要问题对输入串cabd的两种归约过程(1)cabd|-cAd|-S归约到开始符(2)cabd|-cAbd不能归约到开始符在自下而上的分析方法中,每一步都是从当前串中选择一个子串加以归约,该子串暂称“可归约串”。如何确定“可归约串”是自下而上分析的主要问题。,.,61,不同的确定“可归约串”的方法,形成了不同的自下而上分析方法在一种“规范归约”方法中,“可归约串”被称为“句柄”,.,62,短语,直接短语和句柄定义:设是文法GS中的一个句型,如果有S=*A且A=+,则称是句型相对于非终结符A的短语,特别的如有A=,则称是句型相对于规则A的直接短语。,一个句型的最左直接短语称为该句型的句柄(Handle)。,.,63,对定义的分析:在短语的定义中包括了三个条件:是文法的一个句型;S=*A;A=+。,这三个条件都必须满足。(1)(2)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 河南省许昌市建安区第三高中2026届化学高二第一学期期末达标检测模拟试题含答案
- 四川省达州市开江县普安中学2024-2025学年七年级下学期第三次月考数学试卷(含答案)
- 汉字录入课件
- 北师大版五年级上册数学期末检测卷(无答案)
- Unit1 Friendship单元综合测评卷(含答案)译林版(2024)八年级英语上册
- 3DMAX基础建模知到智慧树答案
- 《企业财务会计》知到智慧树答案
- 电子游戏安全风险防范策略
- “两山”之光:理论与实践知到智慧树答案
- 军事理论(四川卫生康复职业学院)知到智慧树答案
- GB/T 9869.2-2025橡胶用硫化仪测定硫化特性第2部分:圆盘振荡硫化仪
- 保密教育培训课件内容
- 陕西省专业技术人员继续教育2025公需课《党的二十届三中全会精神解读与高质量发展》20学时题库及答案
- 2024-2025学年人教版数学五年级下学期期末试卷(含答案)
- 中华人民共和国政府信息公开条例解读PPT
- 同济大学信纸
- 采气工技能操作题库
- 贵州省遵义市红花岗区小升初数学试卷
- 高压氧治疗相关知识
- 外科学麻醉专题知识讲座培训课件
- 课程设计与评价
评论
0/150
提交评论