资源预览内容
第1页 / 共50页
第2页 / 共50页
第3页 / 共50页
第4页 / 共50页
第5页 / 共50页
第6页 / 共50页
第7页 / 共50页
第8页 / 共50页
第9页 / 共50页
第10页 / 共50页
亲,该文档总共50页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
编译原理编译原理编译原理编译原理 长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科学与工程学院学与工程学院学与工程学院学与工程学院内容回顾什么是编译程序编译的过程词法分析语法分析语义分析及中间代码生成优化目标代码生成编译程序的结构与组织编译原理编译原理编译原理编译原理 长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科学与工程学院学与工程学院学与工程学院学与工程学院文法和语言字母表和符号串的基本概念文法和语言的形式定义递归规则与递归文法语法树与文法的二义性文法的分类编译原理编译原理编译原理编译原理 长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科学与工程学院学与工程学院学与工程学院学与工程学院字母表和符号串的基本概念字母表:元素的非空有穷集合。记为。字母表包含了语言中所允许出现的一切符号。例如:=0,1符号串(字):字母表中的符号所组成的有穷序列。一个语言的句子总是它的字母表的符号串。这个符号串的组成必须是按照文法规则组合而成的。语法分析的一个重要任务就是:判断一个符号串的组成是否满足某个文法的规定。编译原理编译原理编译原理编译原理 长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科学与工程学院学与工程学院学与工程学院学与工程学院字母表和符号串的基本概念空串:不包含任何符号的串,记为。*:表示上所有符号串的全体。空集:,不包含任何元素。在本课程中,语言被认为是句子的集合。所以,一个语言就是对应于它的字母表上的一个符号串集合。编译原理编译原理编译原理编译原理 长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科学与工程学院学与工程学院学与工程学院学与工程学院关于符号串的运算符号串的长度:指符号串x中所含符号的个数,记为|x|。符号串相等:若x、y是字母表上的两个符号串,那么当且仅当组成x的各符号与组成y的各符号依次相等时,则符号串x与符号串y相等,记作x=y。符号串的前缀:指从符号串x的末尾删除0或多个符号后得到的符号串。符号串的后缀:指从符号串x的开头删除0或多个符号后得到的符号串。编译原理编译原理编译原理编译原理 长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科学与工程学院学与工程学院学与工程学院学与工程学院关于符号串的运算符号串的子串:指从符号串x的开头和末尾删除0或多个符号后得到的符号串。符号串的前缀、后缀都是它的子串。连接(并置):若x、y是两个符号串,则xy表示连接,是将符号串y连接在符号串x的后面。若x、y是字母表上的两个符号串,则xy也是字母表上的符号串。注意:连接没有交换率,即xyyx而对于空串有x=x=x方幂:x的n次方幂即将n个x连接。x0=,x1=x,x2=xx,xn=xxx=xxn-1=xn-1x编译原理编译原理编译原理编译原理 长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科学与工程学院学与工程学院学与工程学院学与工程学院符号串集合的运算乘积:令A、B为两个符号串集合,A和B的乘积AB定义为:AB=xy|xA且yBA=A=A A=A=方幂:A的n次方幂就是将n个A相乘。A0=A1=AA2=AAAn=AAA=AAn-1=An-1A编译原理编译原理编译原理编译原理 长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科学与工程学院学与工程学院学与工程学院学与工程学院符号串集合的运算集合的正则闭包和集合的闭包:设A为一个集合,则集合A的正则闭包用A+表示,定义为:A+=A1A2.An表示A上的所有的非空符号串的集合。集合A的闭包用A*表示,定义为:A*=A0A+表示A上的所有符号串(包括空字符串)的集合。例如:A=a,b,则A+=a,b,aa,ab,ba,bb,aaa,aab,A*=,a,b,aa,ab,ba,bb,aaa,aab,编译原理编译原理编译原理编译原理 长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科学与工程学院学与工程学院学与工程学院学与工程学院文法和语言的形式定义形式语言描述的两种方法枚举方法使用文法来描述编译原理编译原理编译原理编译原理 长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科学与工程学院学与工程学院学与工程学院学与工程学院文法是一种工具,它可用于严格定义句子的结构。例如,能够描述句子“themonkeyatethebanana”的文法如下: the ate banana monkey 编译原理编译原理编译原理编译原理 长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科学与工程学院学与工程学院学与工程学院学与工程学院文法的形式定义(产生式/规则)产生式:一个产生式是一个有序对(,),通常写作或:=。其中为左部;为右部。产生式意味着能将一个符号串用另外一个符号串替换。因而又被称为重写规则。一组规则规定了一个语言的语法结构。规则中的符号分为两类:终结符号、非终结符号编译原理编译原理编译原理编译原理 长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科学与工程学院学与工程学院学与工程学院学与工程学院终结符与非终结符终结符:VT组成语言的基本符号。在程序设计语言中就是以前屡次提到的单词符号。如:基本字,标识符,常数,算符,界符等。从语法分析的角度看,终结符是一个语言的不可再分的基本符号。非终结符:VN也称语法变量,用来代表语法单位。如“算术表达式”、“布尔表达式”、“赋值句”、“子程序”、“函数”等。一个非终结符代表一个一定的语法概念,是一个类(集合)记号,而不是一个个体记号。VTVN,VTVN为该语言的字母表编译原理编译原理编译原理编译原理 长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科学与工程学院学与工程学院学与工程学院学与工程学院文法的定义Chomcky文法的定义:G=(VN,VT,P,S)其中:VN非空有限的非终结符号集VT非空有限的终结符号集P产生式集S开始符号/识别符号,SVN文法被用来精确而无歧义地描述语言的句子的构成方式。文法描述语言的时候不考虑语言的含义。编译原理编译原理编译原理编译原理 长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科学与工程学院学与工程学院学与工程学院学与工程学院例:按文法形式定义表示上例文法。解:根据文法的形式定义,文法G1=(VN,VT,P,S)VN=句子,主语,谓语,冠词,名词,动词,直接宾语VT=the,ate,banana,monkey产生式集合P由右面8条规则组成开始符号S= the ate banana monkey 编译原理编译原理编译原理编译原理 长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科学与工程学院学与工程学院学与工程学院学与工程学院1.2.3.4.0 5.16.2 7.38.4 9.510.6 11.712.8 13.9产生式的简写:AB,AC可以简化为:AB|C1.2. | 3.0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9编译原理编译原理编译原理编译原理 长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科学与工程学院学与工程学院学与工程学院学与工程学院文法举例G1=(VN,VT,P,S)其中:VN=EVT=i,+,*, (, ) P=EE+E,EE*E,E(E),EiS=E编译原理编译原理编译原理编译原理 长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科学与工程学院学与工程学院学与工程学院学与工程学院语言的形式定义文法的作用是描述某种语言的句子的构成方式。使用文法我们可以产生对应语言的句子。从识别符号开始,不断将当前符号串中的非终结符号替换为该符号的某个规则的右部。直到当前的符号串中所有的符号都是终结符号为止。编译原理编译原理编译原理编译原理 长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科学与工程学院学与工程学院学与工程学院学与工程学院推导和直接推导直接推导:v=A,w=,并且A是文法中的一个产生式,那么我们说v可以直接推导到w,或者w可以直接规约到v。记作vw。其中,(VNVT)*推导:若v=012n=w(n0),则符号串w为符号串v的一个推导。记为v+wv*w含义:v=w或v+w编译原理编译原理编译原理编译原理 长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科学与工程学院学与工程学院学与工程学院学与工程学院例3:G=(E,i,+,*,(,),P,E)P:EE+E|E*E|(E)|i表达式(i)和(i+i)*i的推导:E (E) (i)E E*E (E)*E (E + E)*E (i + E)*E (i + i)*E (i + i)*i E E 0步推导 E (i + i)*i 6步推导 E (i + i)*i 6步推导 E (E) 直接推导编译原理编译原理编译原理编译原理 长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科学与工程学院学与工程学院学与工程学院学与工程学院句型、句子对于文法GS,称为G的一个句型,如果:S*开始符号是最简单的句型。GS的一个句型被称为句子,如果:VT*也就是说句子是全部由终结符号组成的句型。编译原理编译原理编译原理编译原理 长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科学与工程学院学与工程学院学与工程学院学与工程学院文法的语言文法的语言:一个文法GS的语言,用L(GS)表示,定义如下:L(GS)=|S*并且VT*一个文法的语言就是该文法的所有的句子的集合。文法的语言是所有终结符号串所组成的集合的子集,一般是真子集。文法和语言有如下关系:给定一个文法,就能从结构上唯一的确定其语言,即:GL(G)给定一种语言,能确定其文法,但不唯一,即:LG1或G2或。若文法G1和文法G2所产生的语言相同,即L(G1)=L(G2),则称文法G1和文法G2等价。编译原理编译原理编译原理编译原理 长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科学与工程学院学与工程学院学与工程学院学与工程学院文法与语言举例描述语言L=ban|n=1的文法:SbAAaA|a文法SABAaA|aBbB|b描述的语言是:L=anbm|m,n=1编译原理编译原理编译原理编译原理 长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科学与工程学院学与工程学院学与工程学院学与工程学院文法与语言举例已知文法GZ为:ZaZb|ab求该文法确定的语言。已知语言为:L(G)=abna|n1,构造产生该语言的文法。编译原理编译原理编译原理编译原理 长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科学与工程学院学与工程学院学与工程学院学与工程学院思考题=a,b,设计文法描述语言L=a2n,b2n|n=1设计一个表示所有标识符的文法。编译原理编译原理编译原理编译原理 长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科学与工程学院学与工程学院学与工程学院学与工程学院得到一个语言,是通过利用所有的侯选式推导出所有句子,构成一个集合。但是一个句型到另一个句型(句子)的推导过程不是唯一的。G=(E,i,+,*,(,),P,E)P:EE+E|E*E|(E)|i表达式(i+i)*i的推导过程编译原理编译原理编译原理编译原理 长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科学与工程学院学与工程学院学与工程学院学与工程学院最左(右)推导在推导之前确定推导的顺序,是对句子进行确定性分析所必须的。最左(右)推导定义:在一个推导的过程中,如果每一步直接推导所被替换的总是最左(右)的非终结符号,那么这种推导称为最左(右)推导。最右推导又称为规范推导。用规范推导得到的句型称为规范句型。编译原理编译原理编译原理编译原理 长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科学与工程学院学与工程学院学与工程学院学与工程学院最左推导的例子标识符文法GS:SL|SD|SL,La|b|c|x|y|z,D0|1|2|7|8|9最左推导:SSDSDDLDDaDDa6Da69编译原理编译原理编译原理编译原理 长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科学与工程学院学与工程学院学与工程学院学与工程学院最右推导的例子标识符文法GS:SL|SD|SL,La|b|c|x|y|z,D0|1|2|7|8|9最右推导:SSDS9SD9S69L69a69编译原理编译原理编译原理编译原理 长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科学与工程学院学与工程学院学与工程学院学与工程学院递归规则与递归文法递归规则是指那些在规则的右部含有与规则左部相同符号的规则。例如:UxUy,右部含有与规则左部相同符号U,那么就是递归规则。如果这个相同的符号出现在右部的最左端,则为左递归规则。如UUy如果这个相同的符号出现在右部的最右端,则为右递归规则。如UxU编译原理编译原理编译原理编译原理 长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科学与工程学院学与工程学院学与工程学院学与工程学院若文法中至少包含一条递归规则,则称文法是直接递归的。若文法中不含递归规则,但有推导过程U=+xUy,所以该文法为间接递归文法。 递归文法使我们能用有穷的文法刻画无穷的语言。 编译原理编译原理编译原理编译原理 长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科学与工程学院学与工程学院学与工程学院学与工程学院语法树用一张图来表示一个句型的推导,有助于理解句子语法结构的层次。定义:设文法G=(VN,VT,P,S),对于文法G的任意一个句型都存在一棵相应的语法树:结点由符号组成。根结点对应于开始符号。只有非终结符号对应的结点有子结点。一个结点和它的子结点分别对应于文法中的一个规则的左部和右部。编译原理编译原理编译原理编译原理 长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科学与工程学院学与工程学院学与工程学院学与工程学院语法树的例子语法GS:SABAaAb|abBcBd|cdSABabcBdcdS=AB=abB=abcBd=abccdd编译原理编译原理编译原理编译原理 长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科学与工程学院学与工程学院学与工程学院学与工程学院语法树的相关概念结点:每个树的结点对应于一个符号。结点的名字就是该符号。边:两个结点之间的连线。根结点:没有边进入的结点。分支:某个结点向下射出的边和其结点称为分支。(父子结点,兄弟结点)子树:语法树的某个结点和它向下射出的部分。编译原理编译原理编译原理编译原理 长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科学与工程学院学与工程学院学与工程学院学与工程学院语法树的相关概念叶子/末端结点:没有向下射出的边的结点称为叶子/末端结点。在相对于句型的语法树中,叶子/末端结点可能是非终结符号。编译原理编译原理编译原理编译原理 长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科学与工程学院学与工程学院学与工程学院学与工程学院用语法树表示上下文无关文法的推导步骤1:根结点为开始符号。步骤2:对于每一次推导使用的规则Uu,找出U对应的结点(此时应该是末端结点),从该结点向下画分支,子结点从左到右分别是u中从左到右的符号。重复步骤2直到推导的最后一步。在语法树的推导过程中,没有后代的端末结点自左至右排列起来就是一个句型一棵语法树表示了一个句型很多可能的不同推导过程。编译原理编译原理编译原理编译原理 长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科学与工程学院学与工程学院学与工程学院学与工程学院文法的二义性定义:如果对于某文法的一个句子存在两棵不同的语法树,则该句子是二义性的。而该文法是二义性文法。这里的二义性是指语法结构上的。如果一个句子具有二义性,那么对这个句子的结构可能有多种正确的解释。通常情况下,句子的语义要通过其语法结构来定义,所以,二义性一般是有害的。定理:文法的二义性是不可判定的。编译原理编译原理编译原理编译原理 长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科学与工程学院学与工程学院学与工程学院学与工程学院文法二义性的例子文法GE:EE+E|E*E|(E)|i文法的句子:i+i*i,其语法树如下:EEE+E*EEE+EE*E编译原理编译原理编译原理编译原理 长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科学与工程学院学与工程学院学与工程学院学与工程学院文法二义性的解决方法对文法加以限制;从语义解释方面加以限制。编译原理编译原理编译原理编译原理 长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科学与工程学院学与工程学院学与工程学院学与工程学院IF语句文法如下:IFTHEN|IFTHENELSE|说明该文法是二义性文法。编译原理编译原理编译原理编译原理 长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科学与工程学院学与工程学院学与工程学院学与工程学院文法的实用限制文法中不含形如PP的产生式。文法中每个非终结符都有用。必须存在含P的句型;从S出发,存在推导:S=*P对于P不存在永不终结的回路。 必须存在终结符串VT*,使得P= 编译原理编译原理编译原理编译原理 长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科学与工程学院学与工程学院学与工程学院学与工程学院文法的化简和改造无用符号和无用产生式的删除产生式的消除单产生式的消除编译原理编译原理编译原理编译原理 长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科学与工程学院学与工程学院学与工程学院学与工程学院文法和语言的Chomsky分类Chomsky文法根据对产生式的不同限制,可分为四类:0型,1型,2型,3型。我们主要用2型和3型文法。编译原理编译原理编译原理编译原理 长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科学与工程学院学与工程学院学与工程学院学与工程学院0型文法/PSG(PhraseStructureGrammar)0型文法的产生式:,(VNVT)+且至少含一VN(VNVT)*相应语言称为0型语言,又称为递归可枚举集合。编译原理编译原理编译原理编译原理 长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科学与工程学院学与工程学院学与工程学院学与工程学院1型文法/CSG(ContextSensitiveGrammar)1型文法的产生式:1A212,其中AVN,1,2(VNVT)*,(VNVT)+。1,2为上下文。1型文法也可以如下定义:所有的规则的右部都比左部长。编译原理编译原理编译原理编译原理 长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科学与工程学院学与工程学院学与工程学院学与工程学院2型文法/CFG(ContextFreeGrammar)2型文法的产生式:A,其中AVN,(VNVT)*。2型文法又称为上下文无关文法。一般的程序设计语言的语法都使用2型文法描述。2型文法的例子:Sab|aSb编译原理编译原理编译原理编译原理 长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科学与工程学院学与工程学院学与工程学院学与工程学院3型文法/RG(RegularGrammar)文法产生式:(1)Aa或者AaB(2)Aa或者ABa其中A,BVN,aVT。3型文法又称为右(左)线性文法,正则文法,其语言也称为正则语言。3型文法的例子:S0|1|1A|2BA1A|0BB0|1|0B编译原理编译原理编译原理编译原理 长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科学与工程学院学与工程学院学与工程学院学与工程学院语言的层次这四种语言可被4种自动机识别:0型图灵机1型线性界限自动机2型下推自动机3型有穷自动机从外到内,四种文法对产生式的限制越来越多,从外到内,四种文法对产生式的限制越来越多,语言的描述能力越来越弱语言的描述能力越来越弱编译原理编译原理编译原理编译原理 长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科学与工程学院学与工程学院学与工程学院学与工程学院正规文法的描述能力比上下文无关文法的描述能力弱正规文法只能用于描述单词的构成上下文无关文法有足够的能力描述现今大多数程序设计语言的语法结构例例 L(G3) = anbn |n1 a,b的个数相同的个数相同, 不能由任何正规文法产生,可不能由任何正规文法产生,可以由下述上下文无关文法产生。以由下述上下文无关文法产生。S -S -aSbaSbS -S -abab同样,上下文无关语言的描述能力比上下文有关语同样,上下文无关语言的描述能力比上下文有关语言的描述能力弱。言的描述能力弱。编译原理编译原理编译原理编译原理 长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科学与工程学院学与工程学院学与工程学院学与工程学院例:G =(Vn,Vt,P,S)P:S-aSBE S-aBE EB-BEaB-ab bE-bb bE-beeE-ee 是一个上下文有关文法编译原理编译原理编译原理编译原理 长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科长春工业大学计算机科学与工程学院学与工程学院学与工程学院学与工程学院小结文法及语言的形式定义递归规则与递归文法语法树与二义文法文法的分类
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号