第2章形式语言概论PPT讲稿.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《第2章形式语言概论PPT讲稿.ppt》由会员分享,可在线阅读,更多相关《第2章形式语言概论PPT讲稿.ppt(167页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第1页,共167页,编辑于2022年,星期一第第2章章 形式语言概论形式语言概论q字母表和符号串字母表和符号串q文法和语言的形式定义文法和语言的形式定义q短语、直接短语和句柄短语、直接短语和句柄q语法树和文法的二义性语法树和文法的二义性q文法和语言的分类文法和语言的分类第2页,共167页,编辑于2022年,星期一 概概 述述 对程序设计语言的描述是从语法、语义和语用三个因素来考虑。语法是对语言结构的定义。语用则是从使用的角度去描述语言。语义是描述了语言的含义。第3页,共167页,编辑于2022年,星期一概概 述述例如例如 赋值语句赋值语句s s2*3.1416*r*(r+h)2*3.1416*
2、r*(r+h)的的 非形式化的描述为:非形式化的描述为:语法:赋值语句由一个变量,后随一个赋 值号“”,再在其后面跟一个表达式构成。语义:首先计算语句右部表达式的值,然后把所得结果送给左部变量中。语用:赋值语句可用来计算和保存表达式的值。第4页,共167页,编辑于2022年,星期一概述 这种非形式化的描述,不够清晰和准确,为了精确定义和描述程序设计语言,需采用形式化的方法。所谓形式化的方法,是用一整套带有严格规定的符号体系来描述问题的方法。形式语言理论是编译的重要理论基础。重点介绍如何采用形式化的方法描述程序设计语言。第5页,共167页,编辑于2022年,星期一字母表和符号串元素的非空有穷集合
3、。例如,=a,b,c1.字母表根据字母表的定义,是字母表,它由a、b、c三个元素组成。第6页,共167页,编辑于2022年,星期一字母表和符号串是一个字母表,由0、1两个元素组成。注意:例如,=0,1(2)字母表中的元素,可以是字母、数字或其他符号。(1)字母表中至少包含一个元素。第7页,共167页,编辑于2022年,星期一字母表和符号串字母表中的元素称为符号或称为字符。例如,前述例子中2.符号(字符)a、b、c是字母表中的符号;0、1是字母表中的符号。第8页,共167页,编辑于2022年,星期一字母表和符号串例如,设有字母表=a,b,c符号的有穷序列称为符号串。符号串总是建立在某个特定字母表
4、上的且只由字母表上的有穷多个符号组成。则有符号串a,b,ab,ba,cba,abc3.符号串(字)第9页,共167页,编辑于2022年,星期一字母表和符号串说明说明:不包含任何符号的符号串,称为空符号串,用表示。符号串中符号的顺序是很重要的。ab和ba是字母表上的两个不同的符号串。空符号串由0个符号组成,其长度|=0|=0第10页,共167页,编辑于2022年,星期一符号串的运算符号串的运算设x和y是符号串,则串xy称为它们的连结。则XYABC10A,YX10AABC。注意:对任意一个符号串x,1.符号串的连结符号串的连结例如,设XABC,Y10A我们有xxx。第11页,共167页,编辑于20
5、22年,星期一符号串的运算符号串的运算2.集合的乘积集合的乘积设A和B是符号串的集合,则A和B的乘积定义为:集合的乘积是满足于xA,yB的所有符号串xy所构成的集合。AB=xy|xA,yB第12页,共167页,编辑于2022年,星期一A=A=A符号串的运算符号串的运算例如:设A=a,b,B=c,d则AB=ac,ad,bc,bd由于对任意的符号串x,总有x=x=x所以,对任意集合A,我们有:第13页,共167页,编辑于2022年,星期一符号串的运算符号串的运算特别指出的是,是符号串,不是集合,而表示由空符号串所组成的集合,但这样的集合不是空集合=。第14页,共167页,编辑于2022年,星期一符
6、号串的运算符号串的运算 3.符号串的幂运算符号串的幂运算设x是符号串,则x的幂运算定义为:x0=x1=xx2=xxx3=xxxxn=xxx=xxn-1(n0)n注意:x01第15页,共167页,编辑于2022年,星期一符号串的运算符号串的运算例如,设xabc则x0=x1=abcx2=xx=abcabc第16页,共167页,编辑于2022年,星期一符号串的运算符号串的运算 4.集合的幂运算集合的幂运算设A是符号串的集合,则集合A的幂运算定义为:A0=A1=AA2=AAAn=AAA=AAn-1(n0)n第17页,共167页,编辑于2022年,星期一符号串的运算符号串的运算例如,设A=a,b,则A0
7、=A1=A=a,bA2=AA=aa,ab,ba,bbA3=AAA=A2A=aaa,aab,aba,abb,baa,bab,bba,bbb第18页,共167页,编辑于2022年,星期一符号串的运算符号串的运算5.集合集合A的正闭包的正闭包A与闭包与闭包A*设A是符号串的集合,则A的正闭包A和A的闭包A*的定义为:A+=A1A2AnA*=A0A1A2An=A+第19页,共167页,编辑于2022年,星期一符号串的运算符号串的运算 可见,集合A的正闭包表示A上元素a,b构成的所有符号串的集合,集合A的闭包比集合A的正闭包多含一个空符号串。例如,设A=a,b,则:A+=a,b,aa,ab,ba,bb,
8、aaa,aab,A*=,a,b,aa,ab,ba,bb,aaa,aab,第20页,共167页,编辑于2022年,星期一文法和语言的形式定义文法和语言的形式定义每个形式语言都是某个字母表上按某种规则构成的所有符号串的集合。反之,任何一个字母表上符号串的集合均可定义为一个形式语言。形式语言形式语言序列的集合称为形式语言。第21页,共167页,编辑于2022年,星期一文法和语言的形式定义文法和语言的形式定义 对每个具体语言,都有语法和语义两个方面,形式语言是指不考虑语言的具体意义,即不考虑语义。第22页,共167页,编辑于2022年,星期一文法和语言的形式定义文法和语言的形式定义形式语言的描述形式语
9、言的描述 对形式语言的描述有两种方法,一种方法是当语言为有穷集合时,用枚举法来表示语言。第23页,共167页,编辑于2022年,星期一文法和语言的形式定义文法和语言的形式定义均表示字母表A上的一个形式语言。由于这三个语言均是有限符号串的集合,因此,可枚举出其全部句子来表示该语言。例如,设有字母表A=a,b,c,则L1=a,b,cL2=a,aa,ab,acL3=c,cc第24页,共167页,编辑于2022年,星期一文法和语言的形式定义文法和语言的形式定义例如,设字母表=0,1,则+=123=0,1,00,10,11,01,000,100,当语言为无穷集合时,用文法来描述语言。第25页,共167页
10、,编辑于2022年,星期一文法和语言的形式定义文法和语言的形式定义下面用A表示+,用式子A0表示符号串0A或A生成符号串0,符号“”读作“生成”或“由组成”。则集合A可表示成:A0A1AA0AA1+=123=0,1,00,10,11,01,000,100,第26页,共167页,编辑于2022年,星期一文法的形式定义文法的形式定义 规则是一个符号与一个符号串的有序对(A,),通常写作:A(或A)1.1.规则规则 也称产生式也称产生式 规则的作用是告诉我们如何用规则中的符号串生成语言中的序列。第27页,共167页,编辑于2022年,星期一文法的形式定义文法的形式定义 例如,前述例中一组规则 描述的
11、语言序列只可能是由0和1组成的符号串。A0A1AA0AA1第28页,共167页,编辑于2022年,星期一文法的形式定义文法的形式定义 规则中出现的符号分为两类,一类是终结符号,另一类是非终结符号。非终结符号是出现在规则左部能派生出符号或符号串的那些符号,即每个非终结符号表示一定符号串的集合,用大写字母表示或用尖括号把非终结符号括起来。例如,上例中的A。第29页,共167页,编辑于2022年,星期一文法的形式定义文法的形式定义 终结符号是不属于非终结符号的那些符号,它是组成语言的基本符号,是一个语言的不可再分的基本符号,通常用小写字母表示。例如,上例中的0和1。第30页,共167页,编辑于202
12、2年,星期一文法的形式定义文法的形式定义 规则的非空有穷集合,通常表示成四元组VN是规则中非终结符号的集合。VT是规则中终结符号的集合。P是文法规则的集合。2.文法文法G=VN,VT,P,S第31页,共167页,编辑于2022年,星期一文法的形式定义文法的形式定义 S 是一个非终结符号,称为文法的开始符号或文法的识别符号,它至少要在一条规则中作为左部出现。由它开始,识别出我们所定义的语言。由文法定义可知,文法是对语言结构的定义和描述,文法四大要素中关键是规则的集合。第32页,共167页,编辑于2022年,星期一文法的形式定义文法的形式定义将它们缩写为:A1|2|nA1A2An其中每个i有时也称
13、为是A的一个候选式。为了书写方便,对于若干个左部相同的规则,如第33页,共167页,编辑于2022年,星期一文法的形式定义文法的形式定义我们约定:第一条规则的左部是识别符号。对文法G不用四元式显示表示,仅只将规则写出。第34页,共167页,编辑于2022年,星期一文法的形式定义文法的形式定义G=(VN,VT,P,S)VN=AVT=0,1P:A0|1|A0|A1S=A前例中描述+的文法是:第35页,共167页,编辑于2022年,星期一文法的形式定义文法的形式定义例1设字母表=a,b,试设计一个文法,描述语言L=a2n,b2n|n1分析 设计一个文法来描述一个语言,关键是设计一组规则生成语言中的符
14、号串。因此,为设计该语言文法,必须分析这个语言是由怎样一些符号串组成的,即首先分析语言中串的结构特征:第36页,共167页,编辑于2022年,星期一文法的形式定义文法的形式定义当n1L=aa,bb L=aa,bb,aaaa,bbbb,aaaaaa,bbbbbb,即语言L是由偶数个a,偶数个b这样的符号串组成的集合。L=a2n,b2n|n1当n2L=aaaa,bbbb当n3L=aaaaaa,bbbbbb第37页,共167页,编辑于2022年,星期一文法的形式定义文法的形式定义因此,定义语言L的文法 G=(VN,VT,P,S)其中:VN=A,B,DVT=a,bP=AaaS=ABaaDbb|bbD|
15、bb|bbD注意:VTaa,bb|aaB|aaB第38页,共167页,编辑于2022年,星期一文法的形式定义文法的形式定义提出问题:描述该语言的文法是否唯一呢?显然,G不同于G。由此可见,对于一个给定的语言,描述该语言的文法是不唯一的。P:AB|DBaa|aBaDbb|bDb第39页,共167页,编辑于2022年,星期一若G和G是两个不同的文法,如果它们描述的语言相同,那么,称G和G为等价文法。文法的形式定义文法的形式定义第40页,共167页,编辑于2022年,星期一描述该语言的文法是否G?文法的形式定义文法的形式定义对此例,我们提出下面这样一个问题:G=(A,a,b,P,A)P=Aaa|bb
16、|Aaa|Abb第41页,共167页,编辑于2022年,星期一对于文法G来说,它所产生的有些符号串,如aabb,bbaa,不属于语言L,即设计的文法超出了所定义语言的范围。文法的形式定义文法的形式定义P=Aaa|bb|Aaa|Abb第42页,共167页,编辑于2022年,星期一文法的形式定义文法的形式定义例2试设计一个表示所有标识符的文法分析 题意是用文法定义标识符,必须确定P中规则。为了设计出一组规则,首先应搞清楚集合中串的结构特首先应搞清楚集合中串的结构特征征。第43页,共167页,编辑于2022年,星期一文法的形式定义文法的形式定义用I代表标识符;L代表字母;D代表数字;则定义标识符的文
17、法为:字母字母或数字串标识符的结构可用下图表示:第44页,共167页,编辑于2022年,星期一文法的形式定义文法的形式定义G=(VN,VT,P,S)其中:VN=I,L,DVT=a,b,c,x,y,z,0,1,2,9P=ILS=ILa|b|c|x|y|zD0|1|2|3|9|IL|ID第45页,共167页,编辑于2022年,星期一文法的形式定义文法的形式定义 若将定义标识符的文法设计成:其中VN,VT,S同上 G=(VN,VT,P,S)P=IL|IDLa|b|c|x|y|zD0|1|2|3|9 第46页,共167页,编辑于2022年,星期一文法的形式定义文法的形式定义 该文法不能定义ab,abc
18、仅由字母串组成的标识符,缩小了所定义语言的范围。P=IL|IDLa|b|c|x|y|zD0|1|2|3|9 第47页,共167页,编辑于2022年,星期一文法的形式定义文法的形式定义用I代表标识符;L代表字母;D代表数字;T代表字母数字串;则定义标识符的文法还可写为:字母字母或数字串第48页,共167页,编辑于2022年,星期一文法的形式定义文法的形式定义P:IL|LTTL|D|LT|DTLa|b|c|x|y|zD0|1|2|3|9字母字母或数字串第49页,共167页,编辑于2022年,星期一文法的形式定义文法的形式定义例3用文法定义一个含、*的算术表达式,定义用下述自然语言描述:变量是一个表
19、达式;若E1和E2是算术表达式,则E1E2、E1*E2、(E1)也是算术表达式。第50页,共167页,编辑于2022年,星期一文法的形式定义文法的形式定义分析算术表达式的定义用自然语言描述,这是对算术表达式的非形式定义,题意用文法来定义算术表达式,即是用形式化的方法定义表达式。定义算术表达式的文法为:G=(E,i,+,*,(,),P,E)其中P为:Ei|E+E|E*E|(E)第51页,共167页,编辑于2022年,星期一文法的形式定义文法的形式定义P为:Ei|E+E|E*E|(E)i,i+i,i*i,i+i*i,(i+i),注意:是符号串的集合第52页,共167页,编辑于2022年,星期一文法
20、的形式定义文法的形式定义例4设字母表=a,b,试设计一个文法,描述语言L=abna|n0分析 该语言中串的结构特征是 当n1L=abaL=aa,aba,abba,当n2L=abba当n0L=aa(b0=)第53页,共167页,编辑于2022年,星期一文法的形式定义文法的形式定义所以定义语言的文法为:G=(A,B,a,b,P,A)P=AaBaBBb|L=aa,aba,abba,第54页,共167页,编辑于2022年,星期一文法的形式定义文法的形式定义例5设字母表=(,),试设计一个文法描述语言L=(n)n|n0分析 该语言中串的结构特征是 当n=0L=注:(0)0=当n=1L=()当n=2L=(
21、)L=,(),(),(),第55页,共167页,编辑于2022年,星期一文法的形式定义文法的形式定义P:S|(S)所以定义语言的文法为:L=(n)n|n0第56页,共167页,编辑于2022年,星期一语言的形式定义语言的形式定义 1.直接推导 令G是一文法,我们称xAy直接推导出xy,即xAyxy仅A是G的一条规则,且x,y(VNVT)*。也就是说从符号串xAy直接推导出xy仅使用一次规则。第57页,共167页,编辑于2022年,星期一语言的形式定义语言的形式定义例如,设有文法GS:S01使用规则S01 此时 x,yP为:S01|0S1有如下直接推导:S0S1使用规则S0S1此时x,y第58页
22、,共167页,编辑于2022年,星期一语言的形式定义语言的形式定义0S10011使用规则S01此时x0,y100S11000S111使用规则S0S1此时x00,y11000S11100001111使用规则S01此时x000y111S01|0S1第59页,共167页,编辑于2022年,星期一语言的形式定义语言的形式定义(1)形式上的区别,推导用“”表示,规则用“”表示。(2)对文法G中任何规则A,我们有A,即推导的依据是规则。注意推导和规则的区别:第60页,共167页,编辑于2022年,星期一即表示从0出发,经一步或若干步或者说使用若干次规则可推导出n。语言的形式定义语言的形式定义 如果存在一个
23、直接推导序列:则我们称这个序列是一个从0至n的长度为n的推导,记为2推导012 n+0n第61页,共167页,编辑于2022年,星期一语言的形式定义语言的形式定义 例如设有文法GE=(E,T,F,i,+,*,(,),P,E)对 i+i*i有如下直接推导序列:我们可记为 其中P为:EE+T|TTT*F|FF(E)|iEE+TT+TF+Ti+T i+T*Fi+F*Fi+i*F i+i*iEi+i*i+第62页,共167页,编辑于2022年,星期一语言的形式定义语言的形式定义 3广义推导 我们有:0n表示从0出发,经0步或若干步,可推导出n。*也就是说0n意味着0n或者0=n。*+EE*Ei+i*i
24、*对上例EE+T|TTT*F|FF(E)|i第63页,共167页,编辑于2022年,星期一语言的形式定义语言的形式定义 区别:直接推导的长度为1,推导的长度大于等于1,而广义推导的长度大于等于0。第64页,共167页,编辑于2022年,星期一语言的形式定义语言的形式定义 4.句型和句子设有文法GS(S是文法G的开始符号)如果Sx,x(VNVT)*则称符号串x 为文法GS的句型。*如果Sx,x VT*则称符号串x为文法GS的句子。*第65页,共167页,编辑于2022年,星期一语言的形式定义语言的形式定义 例1设有文法GS:我们有:显然,符号串01、0S1、00S11和000111都是文法GS的
25、句型,而01和000111又是文法GS的句子。S01|0S1S01*S0S1*S00S11*S000111*第66页,共167页,编辑于2022年,星期一语言的形式定义语言的形式定义 例2设有文法GE:试证明符号串(i*i+i)是文法GE的一个句子。分析只要证明符号串(i*i+i)对文法G存在一个推导,就可证明符号串(i*i+i)是文法GE的一个句子。EE+E|E*E|(E)|i第67页,共167页,编辑于2022年,星期一语言的形式定义语言的形式定义 EE+E|E*E|(E)|iE(E)(E+E)(E*E+E)(i*E+E)(i*i+E)(i*i+i)即有E(i*i+i),所以符号串(i+i
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 形式语言 概论 PPT 讲稿
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内