《编译原理文法》PPT课件.ppt
《《编译原理文法》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《编译原理文法》PPT课件.ppt(73页珍藏版)》请在三一办公上搜索。
1、1,第三章文法和语言,本章的目的是为语言的语法描述寻求工具 通过这个工具,可以达到以下目的:工具要对源语言(程序设计语言)给出精确无二义的语法描述,要求严谨、简洁、易读根据语言文法的特点来指导语法分析的过程。从描述语言的文法可以自动构造出可用的语法分析程序。制导语义翻译,2,文法的直观概念和语言概述,表述一种语言时,无非是说明这种语言的句子,如果语言只含有有穷多个句子,则只需列出句子的有穷集就行了,对于含有无穷句子的语言,存在着如何给出它的有穷表示的问题。自然语言无法列出全部句子,但可以给出一些规则,用这些规则来说明(或者定义)句子的组成结构,用EBNF来表示这种句子的构成规则:,3,EBNF
2、表示句子的构成规则,句子=主语谓语主语=代词名词代词=我你他名词=王明大学生工人英语谓语=动词直接宾语动词=是学习直接宾语=代词名词,4,导出句子 首先去找=左端的带有句子的规则并把它由=右端的符号串代替,这个动作表示成:句子 主语谓语 然后在得到的串主语谓语中,选取主语或谓语,再用相应规则的=右端代替之。比如,选取了主语,并采用规则主语=代词,那么得到:主语谓语 代词谓语,重复做下去,即可得到一个句子。【例】句子:“我是大学生”的全部动作过程是:句子 主语谓语 代词谓语 我谓语 我动词直接宾语 我是直接宾语 我是名词 我是大学生,5,句子构成规则,“我是大学生”的构成符合上述规则,而“我大学
3、生是”不符合上述规则。这些规则成为判别句子结构合法与否的依据,这些规则是一种元语言,用它描述汉语。这里仅仅涉及汉语句子的结构描述。其中一种起描述作用的元语言称为文法。,6,语言概述,语言是由句子组成的集合,是由一组符号所构成的集合。汉语所有符合汉语语法的句子的全体英语所有符合英语语法的句子的全体程序设计语言所有该语言的程序的全体 每个句子构成的规律研究语言 每个句子的含义 每个句子和使用者的关系,7,语言概述,研究程序设计语言 每个程序构成的规律 每个程序的含义 每个程序和使用者的关系语言研究的三个方面 语法(Syntax):表示构成语言句子的各个记号之间的组合规律 语义(Semantics)
4、:表示各个记号的特定含义。(各个记号和记号所表示的对象之间的关系)语用(Pragmatics):表示在各个记号所出现的行为中,它们的来源、使用和影响。,8,语言概述,每种语言具有两个可识别的特性,即语言的形式和该形式相关联的意义。语言的实例若在语法上是正确的,其相关联的意义可以从两个观点来看,其一是该句子的创立者所想要表示的意义,另一是接收者所检验到的意义。这两个意义并非总是一样的,前者称为语言的语义,后者是其语用意义。幽默、双关语和谜语就是利用这两方面意义间的差异。,9,形式语言,如果不考虑语义和语用,即只从语法这一侧面来看语言,这种意义下的语言称作形式语言。形式语言抽象地定义为一个数学系统
5、。“形式”是指这样的事实:语言的所有规则只以什麽符号串能出现的方式来陈述。形式语言理论是对符号串集合的表示法、结构及其特性的研究。是程序设计语言语法分析研究的基础。,10,语言的一般描述,程序设计语言是由一切程序所组成的集合,而程序是由保留字,字母和数字这样一些基本符号所组成,从字面上看,每个程序都是一个“基本符号”串,设有一基本符号集,那么程序设计语言可看成是在这个基本符号集上定义的、按一定规则构成的一切基本符号串组成的集合.,11,定义和记号,符号:可以相互区别的记号(元素)。字母是符号,数字也是符号。字母表:符号(元素)的非空有穷集合。因此字母表也称为符号集。不同的语言可以有不同的字母表
6、,例如汉语的字母表中包括汉字、数字及标点符号等。C语言的字母表是由字母、数字、若干专用符号。,12,定义和记号,符号串:由字母表中的符号组成的任何有穷序列称为符号串.例如00 11 10 是字母表=0,1上的符号串.字母表A=a,b,c上的一些符号串有:a,b,c,ab,aaca。在符号串中,符号的顺序是很重要的,符号串ab就不同于ba,abca和aabc也不同。可以使用字母表示符号串,如x=STR表示“x是由符号S、T和R,并按此顺序组成的符号串”。符号串的长度:如果某符号串x中有m个符号,则称其长度为m,表示为x=m,如001110的长度是6。空符号串:即不包含任何符号的符号串,用表示,其
7、长度为0,即=0。,13,符号串的运算,符号串的头、尾、固有头和固有尾:如果z=xy是一符号串,那么x是z的头,y是z的尾,如果x是非空的,那么y是固有尾;同样如果y非空,那么x是固有头。例:设z=abc,那么z的头是,a,ab,abc,除abc外,其它都是固有头;z的尾是,c,bc,abc,z的固有尾是,c,bc。当对符号串z=xy的头感兴趣而对其余部分不感兴趣时,采用省略写法:z=x;如果只是为了强调x在符号串z中的某处出现,则可表示为:z=x;符号t是符号串z的第一个符号,则表示为z=t。,14,符号串的运算,符号串的连接:设x和y是符号串,它们的连接xy是把y的符号写在x的符号之后得到
8、的符号串.由于的含义,显然有x=x=x。例如 x=ST,y=abu,则它们的连接xy=STabu,看出x=2,y=3,xy=5符号串的方幂:符号串自身连接n次得到的符号串 an 定义为 aaaa(n个a),a1=a,a2=aa且a0=例;若x=AB 则:x0=x1=AB x2=ABAB x3=ABABAB xn=xxn-1=xn-1 x(n0),15,符号串的运算,符号串集合:若集合A中所有元素都是某字母表上的符号串,则称A为字母表上的符号串集合。两个符号串集合A和B的乘积 定义为 AB=xy|xA且yB 若 集合A=ab,cde 集合B=0,1 则 AB=ab1,ab0,cde0,cde1
9、使用*表示上的一切符号串(包括)组成的集合,称为的闭包。上的除外的所有符号串组成的集合记为+,称为的正闭包。,16,例:=a,b*=,a,b,aa,ab,ba,bb,aaa,aab,+=a,b,aa,ab,ba,bb,aaa,aab,17,定义和记号,语言是由句子组成的集合,是由一组符号所构成的集合。换言之,字母表上的一个语言是上的一些符号串的集合(字母表上的每个语言是*的一个子集)。例如:字母表=a,b,*=,a,b,aa,ab,ba,bb,aaa,aab,集合ab,aabb,aaabbb,anbn,或表示为w|w*且w=anbn,n1为字母表上的一个语言。集合a,aa,aaa,或表示为w|
10、w*且w=an,n1 为字母表上的一个语言。是一个语言,即 是一个语言。,18,语言上的有关运算,设L是上的一个语言,M是上的一个语言,语言L和M的并,交,差,补是一个语言。语言L和M的并为 LM,是一个语言:w|w is in L or is in M 如:L1=a,b,y,z M1=1,28,9 L1M1=a,b,y,z,1,28,9 语言L和M的连接是一个语言,记为 LM LM=st|sL且 tM 如:L1M1=a1,b1,y1,z1,a2,b2a9z9 有L=L=L。L的n次连接Ln=LL.L,19,语言上的运算,语言L的 闭包记为 L*,L*=L0 L1 L2.L0=,Ln=L Ln
11、-1=Ln-1 L,n1 语言L的正闭包记为 L+,L+=L1 L2 L3.L+=LL*=L*L,L*=L+如:L1=a,b,y,z M1=1,28,9(L1M1)=a,b,y,z,1,28,9(L1M1)*=a,b,y,z,1,28,9,aa,1a,xyz,6789st.L1(L1M1)*=所有字母打头的字母和数字符号串,20,文法和语言的形式定义,如何来描述一种语言?如果语言是有穷的(只含有有穷多个句子),可以将句子逐一列出来表示如果语言是无穷的,找出语言的有穷表示。语言的有穷表示有两个途经:生成方式(文法):语言中的每个句子可以用严格定义的规则来构造。识别方式(自动机):用一个过程,当输
12、入的一任意串属于语言时,该过程经有限次计算后就会停止并回答“是”,若不属于,要麽能停止并回答“不是”,(要麽永远继续下去。),21,文法和语言的形式定义,文法即是通过生成方式描述语言的:语言中的每个句子可以用严格定义的规则来构造。下面给出文法的定义。进而在文法定义的基础上,给出推导的概念,句型、句子和语言的定义。,22,文法的定义,文法G定义为四元组(VN,VT,P,S)其中VN为非终结符号(或语法实体,或变量)集;VT为终结符号集;P为产生式(也称规则)的集合;VN,VT和P是非空有穷集。S称作识别符号或开始符号,它是一个非终结符,至少要在一条产生式中作为左部出现。VN和VT不含公共的元素,
13、即VN VT=用V表示VN VT,称为文法G的字母表或字汇表规则,也称产生式或生成式,是形如或=的(,)有序对,其中是字母表V的正闭包V+中的一个符号,是V*中的一个符号。称为规则的左部,称作规则的右部。,23,文法的定义,例:文法G=(VN,VT,P,S)VN=S,VT=0,1 P=S0S1,S01 S为开始符号,24,文法的定义,例 文法G=(VN,VT,P,S)VN=标识符,字母,数字 VT=a,b,c,x,y,z,0,1,9 P=a,z 0,9 S=,25,文法的习惯写法只写出产生式,1 G:SaAb,Aab,AaAb,A 2 GS:SaAb,Aab,AaAb,A 3 GS:SaSb,
14、Aab|aAb|大写字母:非终结符 小写字母:终结符,26,推导的定义1,直接推导“”如果是文法G的产生式,和是V*中的任意符号,若有v,w满足:v=,w=则称v直接产生w,或说w是v的直接推导,也称w直接归约到v,记作 v w 例:G:S0S1,S01 0S1 00S11 00S11 000S111 000S111 00001111 S 0S1,27,推导的定义2,若存在直接推导的序列:v=w0 w1.wn=w(n0)则称这个序列是一个从v至w的长度为n的推导(简称推导)。或说v推导出w(推导长度为n),或说w归约到v.如果n1,记为v w 如果n0,记为v w(若有v w,或v=w),28
15、,推导的定义2,例:G:S0S1,S01 0S1 00S11 00S11 000S111 000S111 00001111 S 0S1 00S11 000S111 00001111 S 00001111 S 00001111 00S11=*00S11,29,句型、句子的定义,句型:有文法G,若S=*x,则称x是文法G的句型。句子:有文法G,若S=*x,且xVT*,则称x是文法 G的句子。例:G:S0S1,S01 S 0S1 00S11 000S111 00001111 G的句型:S,0S1,00S11,000S111,00001111 G的句子:00001111,01,30,句型、句子的定义,
16、例:GE:EE+T|T TT*F|F F(E)|a EE+T T+T F+T a+T a+T*F a+F*F a+a*F a+a*a则该文法的句子:用符号a,+,*,()构成 的算术表达式,31,语言的定义,由文法G生成的语言记为L(G),它是文法G的一切句子的集合:L(G)=x|S=*x,S为文法开始符号,且x VT*例:G:S0S1,S01 L(G)=0n1n|n1,32,语言的定义,例:文法GS:(1)SaSBE(2)SaBE(3)EBBE(4)aBab(5)bBbb(6)bEbe(7)eEee L(G)=anbnen|n1,33,语言的定义,S a S BE(SaSBE)a aBEBE
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译原理文法 编译 原理 文法 PPT 课件
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-5569017.html