《编译原理与技术》课件-第3章.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《《编译原理与技术》课件-第3章.ppt》由用户(momomo)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译原理与技术 编译 原理 技术 课件
- 资源描述:
-
1、编译原理与技术编译原理与技术第第3章章 程序语言的语法描述程序语言的语法描述 编译原理与技术编译原理与技术2主要内容主要内容u文法和语言文法和语言u文法的分类文法的分类 u文法的等价变换文法的等价变换u语法分析概述语法分析概述 编译原理与技术编译原理与技术3程序语言的语法描述程序语言的语法描述 u程序语言的定义程序语言的定义 程序语言通常是一个能完整、准确和规则地程序语言通常是一个能完整、准确和规则地表达人们的意图,并用以指挥或控制计算机工表达人们的意图,并用以指挥或控制计算机工作的作的“符号系统符号系统”。它完整的定义包括语法、。它完整的定义包括语法、语义及语用三个方面。语义及语用三个方面。
2、一个程序语言的语法是指这样一组规则,使一个程序语言的语法是指这样一组规则,使用它可以形成和产生一个合适的程序。这些用它可以形成和产生一个合适的程序。这些规则一部分称为词法规则,另一部分称为语规则一部分称为词法规则,另一部分称为语法规则(或产生规则)。法规则(或产生规则)。编译原理与技术编译原理与技术4程序语言的语法描述程序语言的语法描述 一个程序语言的语义是指这样一组规则,使一个程序语言的语义是指这样一组规则,使用它可以定义一个程序的意义。静态语义是用它可以定义一个程序的意义。静态语义是一系列限定规则,确定哪些合乎语法的程序一系列限定规则,确定哪些合乎语法的程序是合适的;动态语义也称作运行语义
3、或执行是合适的;动态语义也称作运行语义或执行语义,表明程序要做些什么,要计算什么。语义,表明程序要做些什么,要计算什么。语用表示语言符号及其使用者之间的关系,语用表示语言符号及其使用者之间的关系,涉及符号的来源、使用和影响。涉及符号的来源、使用和影响。编译原理与技术编译原理与技术53.1 文法和语言文法和语言u文法的形式定义文法的形式定义 定义定义3.1:定义四元组定义四元组G=(VN,VT,P,S)是一个是一个文法。其中文法。其中VN,VT和和 P都是非空有限集合,分别都是非空有限集合,分别称为非终结符号集合、终结符号集合及产生式称为非终结符号集合、终结符号集合及产生式集合。集合。S称作识别
4、符号或开始符号,它是一个非称作识别符号或开始符号,它是一个非终结符,至少要在一条产生式中作为左部出现。终结符,至少要在一条产生式中作为左部出现。VN和和VT不含公共元素,即不含公共元素,即VNVT=。通。通常用常用V表示表示VNVT,称为文法,称为文法G的字母表。的字母表。编译原理与技术编译原理与技术63.1 文法和语言文法和语言 例例3.1:文法文法G1=(VN,VT,P,S),其中,其中VN=S,VT=0,1,P=S0S1,S01。该文法只有一个非终结符该文法只有一个非终结符S,有两个终结符,有两个终结符0和和1,有两,有两条产生式,开始符号是条产生式,开始符号是S。很多时候,不用将文法很
5、多时候,不用将文法G的四元组显式地表示出来,的四元组显式地表示出来,而只将产生式写出。一般约定,第一条产生式的左部是而只将产生式写出。一般约定,第一条产生式的左部是开始符号,用尖括号括起来的是非终结符号,不用尖括开始符号,用尖括号括起来的是非终结符号,不用尖括号括起来的是终结符号,或者用大写字母表示非终结符号括起来的是终结符号,或者用大写字母表示非终结符号,小写字母表示终结符号。另外也有一种习惯写法,号,小写字母表示终结符号。另外也有一种习惯写法,将将G写成写成GS,其中,其中S是开始符号。因此,例是开始符号。因此,例3.1还可以还可以写成:写成:G:S0S1 或或 GS:S0S1 S01 S
6、01 编译原理与技术编译原理与技术73.1 文法和语言文法和语言 有时,为书写简洁,常把相同左部的产生式,形如有时,为书写简洁,常把相同左部的产生式,形如A1,A2,An,缩写为:,缩写为:A1|2|n。这里。这里的元符号的元符号|读做读做“或或”。如,例如,例3.1的产生式可以写成的产生式可以写成S 0S1|01。注意注意元符号元符号和和源符号源符号的区别:的区别:文法中使用的元符号文法中使用的元符号或或 =表示左部由右部定义,表示左部由右部定义,|表表示定义同一个左部的几个可选择的右部。而源符号是指示定义同一个左部的几个可选择的右部。而源符号是指文法定义的语言中的符号,全部由文法的终结符构
7、成。文法定义的语言中的符号,全部由文法的终结符构成。编译原理与技术编译原理与技术83.1 文法和语言文法和语言 例例3.2:文法文法G2=(VN,VT,P,S),其中,其中 VN=标识符标识符,字母字母,数字数字,VT=a,b,c,x,y,z,0,1,9,P=标识符标识符字母字母|标识符标识符字母字母|标识符标识符数字数字 字母字母a|b|z 数字数字0|1|9 S=标识符标识符,这里使用尖括号,这里使用尖括号 和和 括起非终结符。括起非终结符。编译原理与技术编译原理与技术93.1 文法和语言文法和语言例例3.3:一个文法的几种写法:一个文法的几种写法:G=(S,A,a,b,P,S)其中其中P
8、=SaAb,Aab,AaAb,A G:SaAb Aab AaAb A GS:Aab AaAb A SaAb GS:Aab|aAb|SaAb编译原理与技术编译原理与技术103.1 文法和语言文法和语言u推导与归约推导与归约 定义定义3.2:设设是文法是文法G=(VN,VT,P,S)的产的产生式,生式,和和是是V*中的任意符号。若有符号串中的任意符号。若有符号串v,w满足:满足:v=,w=,则说,则说v直接产生直接产生w,或者说,或者说,w是是v的的直接推导直接推导。记作。记作vw。也可以。也可以说说w直接归约直接归约到到v。归约是推导的逆过程。归约是推导的逆过程。编译原理与技术编译原理与技术11
9、3.1 文法和语言文法和语言对例对例3.1文法文法G,可以给出直接推导的一些例子如下:,可以给出直接推导的一些例子如下:v=0S1,w=0011,直接推导:直接推导:0S10011,使用的规则:使用的规则:S01,这里,这里=0,=1。v=S,w=0S1,直接推导:直接推导:S0S1,使用的规则:使用的规则:S0S1,这里,这里=,=。v=0S1,w=00S11,直接推导:直接推导:0S100S11,使用的规则:使用的规则:S 0S1,这里,这里=0,=1。编译原理与技术编译原理与技术123.1 文法和语言文法和语言 对例对例3.2文法文法G,直接推导的例子有:,直接推导的例子有:v=标识符标
10、识符,w=标识符标识符字母字母,直接推导:直接推导:标识符标识符标识符标识符字母字母,使用的规则:使用的规则:标识符标识符标识符标识符字母字母,这里这里=。v=标识符标识符字母字母数字数字,w=字母字母字母字母数字数字,直接推导:直接推导:标识符标识符字母字母数字数字 字母字母字母字母数字数字,使用的规则:使用的规则:标识符标识符字母字母。这里这里=,=字母字母数字数字。v=abc数字数字,w=abc5,直接推导:直接推导:abc 数字数字 abc5,使用的规则:使用的规则:数字数字5,这里,这里=abc,=。编译原理与技术编译原理与技术13 定义定义3.3:如果存在直接推导的序列:如果存在直
11、接推导的序列:v=w0 w1 w2 wn=w,(n0),则称,则称v推导推导出出w,推导长度,推导长度为为n。或者称。或者称w归约归约到到v。记作。记作v w。若有。若有v w,或或v=w,则记作,则记作v w。定义定义3.19:设设GS是一文法,如果符号串是一文法,如果符号串x是从是从开始符号推导出来的,即有开始符号推导出来的,即有S x,则称,则称x是文法是文法GS的的句型句型。若。若x仅由终结符号组成,即仅由终结符号组成,即S x,xVT*,则称,则称x为为GS的的句子句子。3.1 文法和语言文法和语言编译原理与技术编译原理与技术143.1 文法和语言文法和语言对例对例3.1文法,存在直
12、接推导序列文法,存在直接推导序列v=0S100S11 000S111 00001111=w,即即0S1 00001111,也可记作,也可记作0S1 00001111。对例对例3.2文法,存在直接推导序列文法,存在直接推导序列 v=标识符标识符 标识符标识符数字数字 字母字母数字数字 x数字数字 x1=w,即即标识符标识符 x1,也可记作,也可记作标识符标识符 x1。S,0S1,000111都是例都是例3.1的文法的文法G的句型,其中的句型,其中000111是是G的句子。的句子。标识符标识符字母字母,字母字母数字数字,a1等都是例等都是例3.2文法文法G的句型,其中的句型,其中a1是是G的句子。
13、的句子。编译原理与技术编译原理与技术153.1 文法和语言文法和语言例例3.4:终结符号串终结符号串(i*i+i)是文法是文法 EE+E|E*E|(E)|i 的的一个句子。因为有从开始符号一个句子。因为有从开始符号E至终结符号串至终结符号串(i*i+i)的的一个推导:一个推导:E(E)(E+E)(E*E+E)(i*E+E)(i*i+E)(i*i+i)而而E,(E),(E*E+E)等是文法的句型。等是文法的句型。编译原理与技术编译原理与技术163.1 文法和语言文法和语言 定义定义3.4:若推导过程中每一步都是替换最左(右)若推导过程中每一步都是替换最左(右)边的非终结符,则称该推导为边的非终结
14、符,则称该推导为最左(右)推导最左(右)推导。句型的最右推导称为句型的最右推导称为规范推导规范推导,其逆过程最左,其逆过程最左归约称为归约称为规范归约规范归约。例例3.5:文法文法GS:SAB AA0|1B B0|S1 给出句子给出句子101001的最左和最右推导。的最左和最右推导。解:最左推导:S AB 1B B10B 10S1 10AB1 101BB1 1010B1 101001 最右推导:S AB AS1AAB1 AA01 A1B01 A1001 1B1001 101001 编译原理与技术编译原理与技术173.1 文法和语言文法和语言 u文法产生的语言文法产生的语言 定义定义3.5:文法
15、文法G的全部句子组成的集合称为的全部句子组成的集合称为G产产生的语言,记为生的语言,记为L(G),即,即 L(G)=x|S x,其中,其中S为开始符号,且为开始符号,且xVT*例例3.1的文法的文法G1 的语言是的语言是L(G)=0n1n|n1。例。例3.2的的文法文法G2的句子是字母打头的、由字母和数字组成的符号的句子是字母打头的、由字母和数字组成的符号串,也就是程序设计语言中用于表示名字的标识符,因串,也就是程序设计语言中用于表示名字的标识符,因此产生的语言就是所有标识符的集合。此产生的语言就是所有标识符的集合。编译原理与技术编译原理与技术183.1 文法和语言文法和语言 例例3.6:考虑
16、文法考虑文法G1:S bA A aA|a 求它所定义的语言。求它所定义的语言。解:从开始符S出发,可以推出如下句子:SbA ba SbA baA baa SbA baA baaA baaa 因此,文法G1产生以b开头、后面跟一个或多个a的所有符号串,从而L(G1)=ban|n1。编译原理与技术编译原理与技术193.1 文法和语言文法和语言 例例3.7:设有文法设有文法G2:S P|aPb P ba|bQa Q ab 求语言求语言L(G2)。解:从开始符S出发,可以推出如下句子:SPba SP bQa baba SaPbabab SaPbabQabababab 文法G2共能产生4个句子,因此L(
17、G2)=ba,baba,abab,ababab 编译原理与技术编译原理与技术203.1 文法和语言文法和语言 例例3.8:设设G3=(VN,VT,P,S),VN=S,B,E,VT=a,b,e,P由下列产生式组成:由下列产生式组成:(1)SaSBE (2)SaBE (3)EBBE (4)aBab (5)bBbb (6)bEbe (7)eEee 求语言求语言L(G3)。解:L(G3)=anbnen|n1。编译原理与技术编译原理与技术213.1 文法和语言文法和语言u语言的验证语言的验证 一般来说,对一般来说,对“文法文法G产生语言产生语言L”的证明包的证明包括两部分:括两部分:(1)证明由)证明由
18、G产生的每个字符串都在产生的每个字符串都在L中。中。(2)证明)证明L中的每个字符串都能由中的每个字符串都能由G产生。产生。编译原理与技术编译原理与技术223.1 文法和语言文法和语言 例例3.9:验证文法验证文法G1:S (S)S|产生语言产生语言L(G1)=配对的配对的括号串的集合。括号串的集合。证明:(1)按推导步数进行归纳证明:推出的是配对括号串 归纳基础:S 归纳假设:少于n步的推导都产生配对的括号串 归纳步骤:n步的最左推导如下S (S)S (x)S (x)y 其中x、y是配对的括号串,从而(x)y也是配对的 括号串,即n步的推导也产生配对的括号串。因此,由G1产生的每个字符串都是
19、配对的括号串都在 L(G1)中。编译原理与技术编译原理与技术233.1 文法和语言文法和语言(2)按符号串的长度进行归纳证明:配对括号串可由S推出 归纳基础:S 归纳假设:长度小于2n的配对括号串都可以从S推导出来 归纳步骤:考虑长度为2n(n1)的w=(x)y,其中w、x、y 均为配对括号串,有S (S)S (x)S (x)y 即长度为2n的配对括号串都可以从S推导出来。因此,L(G1)中的每个字符串都能由G1产生。由(1)、(2)可知,文法G:S (S)S|产生语言L(G1)=配对的括号串的集合。编译原理与技术编译原理与技术24例例3.10:验证文法验证文法G2:EE+aa 产生的语言是所
20、有由若产生的语言是所有由若干个干个“+”分隔开的分隔开的a 组成的符号串,即组成的符号串,即L(G2)=a,a+a,a+a+a,a+a+a+a,.证明:(1)按a 的数目n归纳证明:每个符号串a+a+.+a L(G2)。归纳基础:因为Ea,所以Ea,aL(G2)。即n=1时成立。归纳假设:假设s=a+a+.+aL(G2),且有n-1个a,则存在 推导E s。归纳步骤:使用产生式EE+a一次,再利用归纳假设可得推 导:E E+a s+a。因此,s+aL(G2),其中 有n个a。因此,所有形如a+a+.+a的符号串在L(G2)中。3.1 文法和语言文法和语言编译原理与技术编译原理与技术25(2)按
21、推导的长度n归纳证明:sL(G2)必满足格式a+a+.+a。归纳基础:推导的长度为1时,只能为E a,而a是满足格式。归纳假设:长度为n-1的推导能推出满足格式a+a+.+a。归纳步骤:考虑长度为n1的推导E s。因为n 1,因此第一步 推导必然使用产生式EE+a,从而E E+a s+a=s,其中推导E s 长度为n-1,由归纳假设可知s 满足格式。因此,s=s+a 也满足格式a+a+.+a。因此,L(G2)中的所有符号串都满足格式a+a+.+a。由(1)、(2)可知,文法G2:EE+aa产生语言L(G2)=配对的括号串的集合。3.1 文法和语言文法和语言编译原理与技术编译原理与技术263.1
22、 文法和语言文法和语言u语言的文法表达语言的文法表达 由已知语言求其文法描述,实际上就是讨论由已知语言求其文法描述,实际上就是讨论语言中的句子,根据句子的特点利用层次分析语言中的句子,根据句子的特点利用层次分析的方法,构造相应的文法。构造过程中经常会的方法,构造相应的文法。构造过程中经常会用到下面形式的产生式。用到下面形式的产生式。l右递归(右递归(right recursive)产生式:产生式:A aA|a 产生产生a+,A aA|产生产生a*l左递归(左递归(left recursive)产生式:产生式:A Aa|a产生产生a+,A Aa|产生产生a*编译原理与技术编译原理与技术273.1
23、 文法和语言文法和语言 例例3.11:试构造语言试构造语言L1=anbnci|n1,i0=ab,aabb,abc,aabbc,abcc,aabbcc,的文法。的文法。解:L1中符号串的特点是:串中含一个或多个a并置,可以看作含有a+形式;串中含一个或多个b并置,可以看作含有b+形式;串中含有0个或多个c,可以看作是c*形式。因此,该语言可以看作是a+、b+与c*的连接。使用A aA|a 可以产生a+,使用B bB|b 可以产生b+,使用C cC|可以产生c*。而要表示它们的连接,只需将非终结符A、B、C连接起来即可。因此,满足要求的文法为G(Z):Z ABC A aA|a B bB|b C c
24、C|编译原理与技术编译原理与技术283.1 文法和语言文法和语言也可以使用左递归产生式,得到满足要求的另一个文法G(Z):Z ABC A Aa|a B Bb|b C cC|实际上,a+与b+的产生过程完全一致,可以将产生它们的产生式合并为A aAb|ab。则得到满足要求的另一个文法G(Z):Z AB A aAb|ab B cB|由此可以看出,已知语言求文法,文法不唯一,可以有不同的表达方法。编译原理与技术编译原理与技术293.1 文法和语言文法和语言 例例3.12:已知语言已知语言L2=x|x a,b,c*,且且x是回文字是回文字=,aa,bb,cc,aba,aca,bab,bcb,cac,c
25、bc,aabaa,,写出,写出该语言的文法。该语言的文法。解:L2中符号串的特点是:串中若包含符号,则以a开头必以a结束,以b开头必以b结束,串中符号对称出现。可以设计文法为 G(Z):Z aZa|bZb|cZc|a|b|c|。编译原理与技术编译原理与技术303.1 文法和语言文法和语言u分析树与语法树分析树与语法树 分析树分析树(parse tree)定义定义3.6:语法分析树用来描述句型的结构,是语法分析树用来描述句型的结构,是句型推导的一种树型表示,简称分析树。句型推导的一种树型表示,简称分析树。给定文法给定文法G=(VN,VT,P,S),对于,对于G的任何句型都能构的任何句型都能构造相
展开阅读全文