编译原理第03章文法和语言.ppt
《编译原理第03章文法和语言.ppt》由会员分享,可在线阅读,更多相关《编译原理第03章文法和语言.ppt(72页珍藏版)》请在三一办公上搜索。
1、1,编译原理文法和语言,华东交通大学软件学院网络工程教研室万仲保E-mail:,2,第三章文法和语言,本章目的 为语言的语法描述寻求工具工具要对程序设计语言给出精确无二义的语法描述。(严谨、简洁、易读)形式工具-形式语言抽象地定义为一个数学系统。“形式”是指这样的事实:语言的所有规则只以什麽符号串能出现的方式来陈述。,3,3.1 文法的直观概念3.2 符号和符号串3.3 文法和语言的形式定义3.4 文法的类型3.5 上下文无关文法及其语法树3.6 句型分析3.7 实用说明,第三章 文法和语言,4,文法的直观概念,一个程序设计语言是一个记号系统,如同自然语言一样,它的完整的定义应包括语法和语义两
2、个方面。所谓一个语言的语法是指一组规则,用它可以形成和产生一个合适的程序。目前广泛使用的手段是上下文无关文法,即用上下文无关文法作为程序设计语言语法的描述工具。语法只是定义什么样的符号序列是合法的,与这些符号的含义毫无关系阐明语法的一个工具是文法,这是形式语言理论的基本概念之一。示例:汉语句子的描述语言概述,5,汉语句子的描述,语法规则定义字符串的判断,6,语法规则定义,句子=主语谓语主语=代词名词代词=我你他名词=王明大学生工人英语谓语=动词直接宾语动词=是学习直接宾语=代词名词,7,字符串的判断,有了一组规则以后,按照如下方式用它们导出句子:开始去找=左端的带有句子的规则并把它由=右端的符
3、号串代替,这个动作表示成:句子 主语谓语,然后在得到的串主语谓语中,选取主语或谓语,再用相应规则的=右端代替之。比如,选取了主语,并采用规则主语=代词,那么得到:主语谓语 代词谓语,重复做下去。句子:“我是大学生”的全部动作过程是:句子主语谓语 代词谓语我谓语我动词直接宾语 我是直接宾语我是名词我是大学生,8,字符串的判断,“我是大学生”的构成符合上述规则,而“我大学生是”不符合上述规则,我们说它不是句子。这些规则成为我们判别句子结构合法与否的依据,换句话说,这些规则看成是一种元语言,用它描述汉语。这里仅仅涉及汉语句子的结构描述。其中一种描述元语言称为文法。,9,符号和符号串,定义:符号:可以
4、相互区别的记号(元素)。字母表():符号(元素)的非空有穷集合。符号串:由字母表中的符号组成的任何有穷序列称为该字母表上的符号串。1.空符号串(没有符号的符号串)是上的符号串 2.若x是上的符号串,a是的元素,则xa是上的符号串 3.y是上的符号串,当且仅当它可以由1和2导出。例如:=a,b,a,b,aa,ab,aabba都是上的符号串符号串的运算,10,符号串的运算,既然将语言定义为一个集合,那么有关集合的运算也适合语言。即:设L是(上的)一个语言,M是(上的)一个语言,则语言L和M的并,交,差,补是一个语言。符号串的头、尾、子串符号串的长度符号串的连接符号串的方幂符号串的集合,11,符号串
5、的头、尾、子串,符号串s的头(前缀):移走符号串s尾部的零个或多于零个符号得到的符号串。如:b是符号串banana的一个前缀.符号串s的尾(后缀):删去符号串s头部的零个或多于零个符号得到的符号串。如:nana是符号串banana的一个后缀.符号串s的子串:从s中删去一个前缀和一个后缀得到的符号串。如:ana是符号串banana的一个子串.对于每个符号串s,s和两者都是符号串s的前缀,后缀和子串。符号串s的真前缀,真后缀,真子串:任何非空符号串 x,相应地,是s的前缀,后缀或子串,并且 s x。,12,符号串中符号的个数。符号串s的长度记为|s|。的长度为0,符号串的长度,13,符号串的连接,
6、设x、y是符号串,则x、y的连接是把y的符号写在x的符号之后得到的符号串xy如 x=ab,y=cd 则 xy=abcd有a=a,14,符号串的方幂,方幂:设x是符号串,把x自身连接n次得到的符号串z,即z=aaaa称为符号串x的方幂。写作z=an示例:a1=a,a2=aaa0=,15,符号串集合,若集合A中所有元素都是某字母表上的符号串,则称A为字母表上的符号串集合。两个符号串集合A和B的乘积定义为:AB=xy|xA且yB若 集合A=ab,cde B=0,1,则 AB=ab1,ab0,cde0,cde1使用*表示上的所有有穷长符号串(包括)组成的集合。*称为的闭包。上的除外的所有符号串组成的集
7、合记为+。+称为的正闭包。*=012n+=12n*=+=*=*,16,文法和语言的形式定义,文法和语言的形式定义文法的定义推导的定义句型(子)的定义语言的定义文法等价的定义,17,语言概述,语言是由句子组成的集合,是由一组符号所构成的集合。汉语-所有符合汉语语法的句子的全体英语-所有符合英语语法的句子的全体 每个句子构成的规律语言研究 每个句子的含义 每个句子和使用者的关系 每个程序构成的规律研究程序设计语言 每个程序的含义 每个程序和使用者的关系 语法 Syntax语言研究的三个方面 语义 Semantics 语用 Pragmatics,18,程序设计语言,研究程序设计语言 每个程序构成的规
8、律 每个程序的含义 每个程序和使用者的关系语言研究的三个方面 语法 Syntax 语义 Semantics 语用 Pragmatics,19,语言研究的三个方面,语法-表示构成语言句子的各个记号之间的组合规律语义-表示各个记号的特定含义。(各个记号和记号所表示的对象之间的关系)语用-表示在各个记号所出现的行为中,它们的来源、使用和影响。每种语言具有两个可识别的特性,即语言的形式和该形式相关联的意义。语言的实例若在语法上是正确的,其相关联的意义可以从两个观点来看,其一是该句子的创立者所想要表示的意义,另一是接收者所检验到的意义。这两个意义并非总是一样的,前者称为语言的语义,后者是其语用意义。幽默
9、、双关语和谜语就是利用这两方面意义间的差异。,20,文法的定义,文法G定义为四元组(VN,VT,P,S)其中VN为非终结符号(或语法实体,或变量)集;VT为终结符号集;P为产生式(也称规则)的集合;VN,VT和P是非空有穷集。S称作识别符号或开始符号,它是一个非终结符,至少要在一条产生式中作为左部出现。VN和VT不含公共的元素,即VN VT=通常用V表示VN VT,称为文法G的字母表或字汇表。规则,也称重写规则、产生式或生成式,是形如或=的(,)有序对,其中是字母表V的正闭包V+中的一个符号,是V*中的一个符号。称为规则的左部,称作规则的右部。示例:例3.1例3.2,21,例3.1,文法G=(
10、VN,VT,P,S),VN=S,VT=0,1,P=S0S1,S01。这里,非终结符集中只含一个元素S;终结符集由两个元素0和1组成;有两条产生式;开始符号是S。,22,例3.2,文法G=(VN,VT,P,S)其中VN=标识符,字母,数字VT=a,b,c,,x,y,z,0,1,,9P=标识符字母标识符标识符字母标识符标识符数字字母a字母b字母z数字0数字1数字9S=标识符这里,使用尖括号和括起非终结符。,23,推导的定义,直接推导“”:如是文法G=(Vn,VT,P,S)的规则(或说是P中的一产生式),和是V*中的任意符号,若有符号串v,w满足:v=,w=则说v(应用规则)直接产生w,或者说,w是
11、v的直接推导,也可以说,w直接归约到v,记作v w。如果存在直接推导的序列:示例:直接推导多步推导,24,直接推导的示例,对于例3.1的文法G,可以给出直接推导的一些例子如下:v=0S1,w=0011,直接推导:0S10011,使用的规则:S01,这里=0,=1。v=S,w=0S1,直接推导:S0S1使用的规则:S0S1,这里=,=v=0S1,w=00S11,直接推导:0S100S11,使用的规则:S0S1,这里=0,=1。对于例3.2的文法G,直接推导的例子有:v=标识符,w=标识符字母,直接推导:标识符 标识符字母,使用的规则:标识符标识符字母,这里=v=标识符字母数字,w=字母字母数字,
12、直接推导:标识符字母数字 字母字母数字,使用的规则:标识符字母。这里=,字母数字。v=abc数字,w=abc5,直接推导:abc数字 abc5,使用的规则:数字5,这里=abc,=。,25,多步推导的示例,对例3.1的文法,存在直接推导序列v=0S100S11000S11100001111=w,即0S1 00001111,也可记作0S1 00001111对例3.2的文法,存在直接推导序列v=标识符标识符数字字母数字x数字x1=w,即 x1,也可记作 x1。,26,句型(子)的定义,设GS 是一文法,如果符号串x是从识别符号推导出来的,即有S x,则称x是文法GS的句型。若x仅由终结符号组成,即
13、S x,xVT*,则称x为GS的句子。例:S,0S1,000111都是例3.1的文法G的句型,其中000111是G的句子。标识符字母,字母数字,a1等都是例3.2文法G的句型,其中a1是G的句子。,27,语言的定义,文法G所产生的语言定义为集合x|S x,其中S为文法识别符号,且xVT*。可用L(G)表示该集合。从定义可以看出两点:第一,符号串x可从识别符号推出,也即x是句型。第二,x仅由终结符号组成,即x是文法G的句子。也就是说,文法描述的语言是该文法一切句子的集合。例:例3.1 G:S0S1,S01 L(G)=0n1n|n1例3.3,28,例3.3,设G=(VN,VT,P,S),VN=S,
14、B,E,VT=a,b,e,P由下列产生式组成:(1)SaSBE(2)SaBE(3)EBBE(4)aBab(5)bBbb(6)bEbe(7)eEee则L(G)=anbnen|n1,29,文法的等价,若L(G1)=L(G2),则称文法G1和G2是等价的。示例:文法G1A:A0R A01 RA1与G2S:S0S1 S01等价。,30,文法的类型,乔姆斯基分类示例:例3.4例3.5乔姆斯基分类文法之间关系对应于乔姆斯基分类文法的语言文法和语言之间的关系,31,乔姆斯基对文法的分类,通过对产生式施加不同的限制,Chomsky(乔姆斯基)将文法分为四种类型:0型文法:对文法G=(VN,VT,P,S)的任一
15、产生式,都有(VNVT)*且至少含有一个非终结符,(VNVT)*。1型文法(上下文有关文法):对文法G=(VN,VT,P,S)的任一产生式,都有|,仅仅 S除外。2型文法(上下文无关文法):对文法G=(VN,VT,P,S)的任一产生式,都有VN,(VNVT)*。3型文法(正规文法):设G=(VN,VT,P,S),若P中的每一个产生式的形式都是AaB或Aa,其中A和B都是非终结符,a是终结符。3型文法G=(VN,VT,P,S)的P中的规则有两种形式:一种是前面定义的形式,即:AaB或Aa其中A,BVN,aVT*,另一种形式是:ABa或Aa,前者称为右线性文法,后者称为左线性文法。正规文法所描述的
16、是VT*上的正规集。,32,例3.4,G=(S,A,B,a,b,P,S),其中P由下列产生式组成:SaB AbAA SbA BbAa BbS AaS BaBB或将P改写为:SaB|bA AbA|a Aa|AaS BbS|BaB|b则G是正规文法或3型文法。,33,例3.5,文法G=(S,A,B,0,1,P,S),其中P由下列产生式组成:S0A A1B S1B B1BS0 B1 A0A B0 A0S或将P改写为:S0A|1B|0A0S|1B|0AB1B|1|0 则G是正规文法或3型文法。,34,乔姆斯基分类文法之间关系,2型文法,1型文法,0型文法,四种文法之间的逐级“包含”关系,3型文法,35
17、,对应乔姆斯基分类文法的语言,0型文法产生的语言称为0型语言。1型文法或上下文有关文法(CSG)产生的语言称为1型语言或上下文有关语言(CSL)。2型文法或上下文无关文法(CFG)产生的语言称为2型语言或上下文无关语言(CF L)。3型文法或正则(正规)文法(RG)产生的语言称为3型语言正则(正规)语言(RL)。,36,文法和语言之间的关系,四种文法之间的关系是将产生式做进一步限制而定义的。语言之间的关系依次:有不是上下文有关语言的0型语言,有不是上下文无关语言的1型语言,有不是正则语言的上下文无关语言。,37,上下文无关文法及其语法树,语法树句型能够构造关联语法树的条件示例:例3.7最左(右
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译 原理 03 文法 语言

链接地址:https://www.31ppt.com/p-6016559.html