编译原理第2章编译基础.ppt
《编译原理第2章编译基础.ppt》由会员分享,可在线阅读,更多相关《编译原理第2章编译基础.ppt(53页珍藏版)》请在三一办公上搜索。
1、1,第二章 编译基础,2,2.0 概 述,对程序设计语言的描述是从语法、语义和语用三个因素来考虑。,语法是对语言结构的定义。,语用则是从使用的角度去描述语言。,语义是描述了语言的含义。,3,2.0 概 述,例如 赋值语句s2*3.1416*r 的非形式化的描述为:,语法:赋值语句由一个变量,后随一个赋值号“”,再在其后面跟一个表达式构成。,语义:首先计算语句右部表达式的值,然后把所得结果送给左部变量中。,语用:赋值语句可用来计算和保存表达式的值。这种非形式化的描述,不够清晰和准确,为了精确定义和描述程序设计语言,需采用形式化的方法。,4,形式化方法:是用一整套带有严格规定的符号体系来描述问题的
2、方法。,2.1 符号表,一 符号串与字母表 1字母表:元素的非空有穷集合。两含义:字母表中至少包含一个元素。字母表中元素可以是字母、数字或其它符号。例如:=a,b,c,5,2.符号(字符):字母表中元素。3.符号串:用字母表中的符号组成的任何有穷序列,也称字。例如:a,ab,bba,acab,注意:符号串中符号的顺序是很重要的。不包含任何符号的符号串称空串,记为。|=0一个字母表上全部符号的集合是无穷的。,6,4.符号串的前缀、后缀以及子串:设x是一符号串,例如:x=abc符号串的前缀:从x的尾部删除若干个(=0)符号后所余下的部分。例如:,a,ab,abc符号串的后缀:从x的头部删除若干个(
3、=0)符号后所余下的部分。例如:,c,bc,abc子串:从x中删除前缀和后缀之后所余下的部分。例如:,a,b,ab,bc,abc,7,二.符号串的运算1符号串的连接:设x,y是符号串,则串xy称为它们的连接。例如:设x=my y=computerxy=mycomputeryx=computermy注意:对任意xX=X=X2集合的和与乘积:设A,B是符号串的集合,则:AB=|A或BAB=xy|xA且yB例如:设A=a,bB=c,d则:AB=a,b,c,dAB=ac,ad,bc,bd注意:A=A=AA=A=A=A=A=,8,3.符号串的幂运算:若x是符号串,则 x0=,x1=x,x2=xx,例如:
4、设 x=abc则:x0=,x1=abc,x2=abcabc,4.集合的幂运算:若A是符号串的集合,则 A0=,A1=A,A2=AA,例如:设 A=a,b则:A0=,A1=a,b,A2=aa,ab,ba,bb,5.集合的A(正闭包)和A*(自反传递闭包):设A为任一集合,则:A=A1A2A3 An(A上所有符号串所组成的集合)A*=A0 A=A例如:设A=a,b,cA=a,b,c,aa,ab,ac,ba,bb,bc,A*=,a,b,c,aa,ab,ac,ba,bb,bc,9,2.2 文法和语言的形式定义,一形式语言:是一字母表上按某种规则构成的所有符号串的集合。反之,任一字母表上符号串的集合均可
5、定义为一个形式语言。二形式语言的描述:(三种方法)1当语言为有穷集合时,用枚举法。,例如:设有字母表 A=a,b,c则:L1=a,bL2=a,aa,ab,ac L3=c,cc,10,2用文法描述语言例如:设有字母表=0,1+=0,1,00,01,11,10,000,100,用A表示+,A0(定义为,生成,导出)用产生式表示+:A0 A1 AA0 AA13用自动机识别语言:构造一种装置来识别语言,它可以判断某符号串是否是该语言的句子。例如:1100 是(接收)11ab 不是(不接收),自动机,11,三 文法的形式定义,1 规则(产生式):是一个符号与一个符号串的有序对(A,),通常写作:A或 A
6、=2非终结符与终结符:非终结符:出现在规则左部能派生出符号或符号串的那些符号。通常用大写字母表示。终结符:是组成语言不可再分的基本符号,通常用小写字母表示。,12,3文法的形式定义:是规则的非空有穷集合,通常定义为四元组:GS=(Vn,Vt,P,S)其中:Vn:规则中非终结符的集合。Vn=AVt:规则中终结符的集合。Vt=0,1P:文法规则式的集合。P:A0 A1 AA0 AA1S:文法的开始符号(识别符号)由它开始识别我们所定义的语言。S=A 例1例2例3例4例5继续,13,例1设有字母表=a,b,请为语言 L=a2n,b2n|n=1 设计一个文法。首先分析语言中串的结构特征:L=aa,bb
7、,aaaa,bbbb,(偶数个a或偶数个b组成)GS=(Vn,Vt,P,S)其中:Vn=A,B,DVt=a,bP:Aaa|aaB|bb|bbD Baa|aaB Dbb|bbDS=A易错:Aaa|aaA|bb|bbA会出现句子 aabb 扩大了语言范围,14,问题:描述是否唯一?(回答不唯一)P1:AB|D Baa|aaB Dbb|bbD等价文法:P2:AB|DBaa|aBaDbb|bDb返回,15,例2已知语言 L=w|w是0和1的个数都为偶数的0,1串。分析句子结构特征:0011001100000101S0A|1B(A,B奇数个0,1)A0B1推出无穷串:A0SB1S产生0101串:C0B|
8、1AA1C B0C文法:GL=(A,B,C,S,0,1,P,S)P:S0A|1BA0S|1C|0B1S|0C|1C0B|1A返回,16,例3.试给出不以0开头的正奇数文法(作业P36.7)分析:奇数集合1,3,5,7,9,11,易错:A1|2*A+1P:Sd1A|d3Ad2A|d3d11|2|3|4|5|6|7|8|9d20|1|2|3|4|5|6|7|8|9d31|3|5|7|9返回,17,例4.用文法定义一个含+,*的算术表达式,定义用自然语言(非形式化)描述:变量是一个算术表达式 若E1和E2是算术表达式,则E1+E2,E1*E2,(E1)也是算术表达式。分析:符号串的集合i,i+i,i
9、*i,(i),i+i*i,GE=(E,i,+,*,(,),P,E)P:EiEE+EEE*E返回E(E)说明:并不是做加法和乘法运算,仅描述哪些符号串是该文法的句子(算术表达式),如 ii+i,i*i+都不是该文法的句子。,18,例5.设计一个表示所有标识符的文法。(标识符的定义:以字母开头的字母数字串)I标识符L字母D数字P:IL|I L|I DLa|b|c|x|y|zD 0|1|2|3|4|5|6|7|8|9 比较:P1:IL|I D(以字母开头的数字串,缩小了语言范围)P2:IL|I L|I D|D(有可能以数字开头,扩大了语言范围)P3:IL|L I|D I(有可能以数字开头,扩大了语言
10、范围),19,四.语言的形式定义,1.直接推导:设x和y是符号串,若用一次规则式可以从x推导出y,则称y为x的直接推导,并记为x=y例如:设有文法GS:S0S1|01S=01S=0S10S1=0011 注意:推导和规则的区别形式上不一样=推导的依据是规则 有A 才有 A=,20,2.推导(+推导):设x和y是符号串,如果使用若干次(=1次)规则式可以从x推导出y,则称y为x的推导,并记为x=y。例如:设有文法:GS:S0S1|01则:S=01S=0S1 S=0S1=00S11=000111 S=000111 3.广义推导(*推导):设x和y是符号串,如果使用若干次(=0次)规则式可以从x推导出
11、y,则称y为x的广义推导,并记为x=y。x=y 等价于x=y 或 x=y,+,+,*,*,+,21,4.句型句子:设有文法GS,能从文法开始符号S推导出来的符号串称为G的一个句型。A=,(VNVT)*仅由终结符号组成的句型称为句子。S=01(句子)S=0S1(句型)S=000111(句子)例如:已知文法GE:E E+E|E*E|(E)|i,试证明符号串(i*i+i)是该文法的一个句子。分析:只要证明符号串对文法G存在一个推导。解:E=(E)=(E+E)=(E*E+E)=(i*E+E)=(i*i+E)=(i*i+i)E=(i*i+i)(i*i+i)是文法G的一个句子。,*,*,*,*,22,5.
12、语言的定义:文法G全体句子所组成的集合。L(GS)=w|S=w 且 wVt*定义式意义如下:w是从文法开始符号推导出来的w仅由终结符号组成,称为该语言的句子L(G)是由所有这样的句子组成的语言L(G)是Vt*的子集,但反过来不一定成立对一给定的文法,可以唯一地确定语言;反过来,给定一语言,可以由不同的文法来描述。,+,23,例1:文法:GS:S0S1|01 所描述的语言是什么?分析:从文法开始符号出发,将推导出什么样的句子,找出句子的规律,用式子或自然语言描述出来。解:S=0S1=00S11=0n-1 S 1n-1=0n 1n L(GS)=0n 1n|n1即:L=01,0011,000111,
13、注意:V*T=,0,1,00,01,(L是V*T 的子集)比较:文法 S0S|1S|所描述的语言是什么?L(GS)=,0,1,00,01,=x|x 0,1*,24,例2:已知文法GS,求该文法所描述的语言?GS:S ABA aAb|abB cBd|cd解:S=AB=aAbB=a2Ab2B=an-1Abn-1B=anbnB=anbn cBd=anbn c2Bd2=anbn cm-1Bdm-1=anbn cmdmS=anbn cmdmL(GS)=anbn cmdm|n,m 1,+,25,例3:已知文法GS,求该文法所描述的语言?GS:S A|BA aAb|0B aBbb|1解:S=A=aAb=a2
14、Ab2=anAbn=an 0 bn S=B=aBbb=a2B(bb)2=an B(bb)n=an 1b2n S=an 0 bn|an 1b2n L(GS)=an 0 bn,an 1b2n|n 0,26,五.规范推导和规范归约,问题:对一个句子的推导过程是不是唯一的?(回答是否定的。)例如:文法GN1:N1 N,N ND|D,D 0|1|2(由0,1,2 组成的无符号正整数)看22的推导过程:N1=N=ND=N2=D2=22(最右推导)N1=N=ND=DD=2D=22(最左推导)N1=N=ND=DD=D2=22(左右推导)同一句子可以通过不同的推导序列推出,为确定推导序列,只考虑两种特殊推导。,
15、27,1.最左(或最右)推导:在推导过程中任何一步,被替换的总是当前符号串中的最左(或最右)非终结符。最右推导也称规范推导,用规范推导推出的句型称规范句型。例如:已知文法GS,给出句子babaab的最左,最右推导。GS:S ABA Aa|bBB a|Sb最右推导:S=AB=ASb=AABb=AAab=AbBab=Abaab=bBbaab=babaab 最左推导:S=AB=bBB=baB=baSb=baABb=babBBb=babaBb=babaab,28,2.归约:句型中某子串用一个非终结符来替换的过程。对规则式:A 则 xAy=xy是推导 xy=xAy是归约例1:22=D2=N2=ND=N=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译 原理 基础

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