计算机编译原理小抄.doc
《计算机编译原理小抄.doc》由会员分享,可在线阅读,更多相关《计算机编译原理小抄.doc(8页珍藏版)》请在三一办公上搜索。
1、编译原理名词解释1.局部优化:局限于基本块范围的优化称。2.二义性文法:如果一个文法存在某个句子对应两棵不同的语法树,则称这个文法是二义性文法。3.DISPLAY表:过程的嵌套层次显示表,记录该过程的各外层过程的最新活动记录的起始地址。由于过程嵌套允许内层过程引用外层过程定义的数据,因此,当一个过程运行时必须跟踪它的所有外层过程的最新活动记录起始地址, display表就是用于登记每个外层过程的最新活动记录起始地址。5.最左推导:任何一步=都是对中的最右非终结符替换。6.语法:一组规则,用它可形成和产生一组合式的程序。7.文法:描述语言的语法结构的形式规则。8.基本块:指程序中一顺序执行的语句
2、序列,其中只有一个入口和一个出口,入口就是其中的第一个语句,出口就是其中的最后一个语句。9.语法制导翻译:在语法分析过程中,根据每个产生式所对应的语义子程序进行翻译的办法叫做语法制导翻译。10.短语:令G是一个文法,S划文法的开始符号,假定是文法G的一个句型,如果有SA且A,则称是句型相对非终结符A的短语。11.待用信息:如果在一个基本块中,四元式i对A定值,四元式j要引用A值,而从i到j之间没有A的其它定值,则称j是四元式i的变量A的待用信息。12.规范句型:由规范推导所得到的句型。13.扫描器:执行词法分析的程序。14.超前搜索:在词法分析过程中,有时为了确定词性,需超前扫描若干个字符。1
3、5.句柄:一个句型的最左直接短语。16.语法制导翻译:在语法分析过程中,根据每个产生式所对应的语义程序进行翻译的方法 叫做语法制导翻译。17.规范句型:由规范推导所得到的句型。18.素短语:素短语是指这样一个短语,至少含有一个终结符,并且,除它自身外不再含任何更小的素短语。19.语法:是组规则,用它可形成和产生一个合式的程序。 20.语义:定义程序的意义的一组规则。21.优化:对程序进行各种等价变换,使得从变换后的程序出发,能产生更有效的目标代码。三种级别:局部优化、循环优化、全局优化21词法分析词法分析的主要任务是从左向右扫描每行源程序的符号,按照词法规则从构成源程序的字符串中识别出一个个具
4、有独立意义的最小语法单位,并转换成统一的内部表示(token),送给语法分析程序。22LL(1)文法 若文法的任何两个产生式A a | b都满足下面两个条件:(1)FIRST(a ) FIRST(b ) = f;(2)若b * e ,那么FIRST(a ) FOLLOW( A ) = f。我们把满足这两个条件的文法叫做LL(1)文法,其中的第一个L代表从左向右扫描输入,第二个L表示产生最左推导,1代表在决定分析器的每步动作时向前看一个输入符号。除了没有公共左因子外,LL(1)文法还有一些明显的性质,它不是二义的,也不含左递归。23语法树句子的树结构表示法称为语法树(语法分析树或语法推导树)。给
5、定文法G=(VN,VT,P,S),对于G的任何句型都能构造与之关联的语法树。这棵树具有下列特征:(1)根节点的标记是开始符号S。(2)每个节点的标记都是V中的一个符号。(3)若一棵子树的根节点为A,且其所有直接子孙的标记从左向右的排列次序为A1A2AR,那么AA1A2AR一定是P中的一条产生式。(4)若一标记为A的节点至少有一个除它以外的子孙,则AVN。(5)若树的所有叶节点上的标记从左到右排列为字符串w,则w是文法G的句型;若w中仅含终结符号,则w为文法G所产生的句子。24LR(0)分析器所谓LR(0)分析,是指从左至右扫描和自底向上的语法分析,且在分析的每一步,只须根据分析栈当前已移进和归
6、约出的全部文法符号,并至多再向前查看0个输入符号,就能确定相对于某一产生式左部符号的句柄是否已在分析栈的顶部形成,从而也就可以确定当前所应采取的分析动作 (是移进还是按某一产生式进行归约等)。25语言和文法文法就是语言结构的定义和描述,是有穷非空的产生式集合。文法G定义为四元组的形式:G=(VN,VT,P,S)其中:VN 是非空有穷集合,称为非终结符号集合;VT 是非空有穷集合,称为终结符号集合;P是产生式的集合(非空);S是开始符号(或识别符号)。这里,VNVT=,SVN。V=VNVT,称为文法G的字母表,它是出现文法产生式中的一切符号的集合。文法G所描述的语言用L(G)表示,它由文法G所产
7、生的全部句子组成,即L(G)=x| S*x,其中S为文法开始符号,且 简单的说,文法描述的语言是该文法一切句子的集合。26词法分析词法分析的主要任务是从左向右扫描每行源程序的符号,按照词法规则从构成源程序的字符串中识别出一个个具有独立意义的最小语法单位,并转换成统一的内部表示(token),送给语法分析程序。27LL(1)文法若文法的任何两个产生式A a | b都满足下面两个条件:(1)FIRST(a ) FIRST(b ) = f;(2)若b * e ,那么FIRST(a ) FOLLOW( A ) = f。我们把满足这两个条件的文法叫做LL(1)文法,其中的第一个L代表从左向右扫描输入,第
8、二个L表示产生最左推导,1代表在决定分析器的每步动作时向前看一个输入符号。除了没有公共左因子外,LL(1)文法还有一些明显的性质,它不是二义的,也不含左递归。28语法树句子的树结构表示法称为语法树(语法分析树或语法推导树)。给定文法G=(VN,VT,P,S),对于G的任何句型都能构造与之关联的语法树。这棵树具有下列特征:(1)根节点的标记是开始符号S。(2)每个节点的标记都是V中的一个符号。(3)若一棵子树的根节点为A,且其所有直接子孙的标记从左向右的排列次序为A1A2AR,那么AA1A2AR一定是P中的一条产生式。(4)若一标记为A的节点至少有一个除它以外的子孙,则AVN。(5)若树的所有叶
9、节点上的标记从左到右排列为字符串w,则w是文法G的句型;若w中仅含终结符号,则w为文法G所产生的句子。29LR(0)分析器所谓LR(0)分析,是指从左至右扫描和自底向上的语法分析,且在分析的每一步,只须根据分析栈当前已移进和归约出的全部文法符号,并至多再向前查看0个输入符号,就能确定相对于某一产生式左部符号的句柄是否已在分析栈的顶部形成,从而也就可以确定当前所应采取的分析动作 (是移进还是按某一产生式进行归约等)。30语言和文法文法就是语言结构的定义和描述,是有穷非空的产生式集合。文法G定义为四元组的形式:G=(VN,VT,P,S)其中:VN 是非空有穷集合,称为非终结符号集合;VT 是非空有
10、穷集合,称为终结符号集合;P是产生式的集合(非空);S是开始符号(或识别符号)。这里,VNVT=,SVN。V=VNVT,称为文法G的字母表,它是出现文法产生式中的一切符号的集合。文法G所描述的语言用L(G)表示,它由文法G所产生的全部句子组成,即L(G)=x| S*x,其中S为文法开始符号,且 简单的说,文法描述的语言是该文法一切句子的集合。31.编译过程的六个阶段:词法分析,语法分析,语义分析,中间代码生成,代码优化,目标代码生成32.解释程序:把某种语言的源程序转换成等价的另一种语言程序目标语言程序,然后再执行目标程序。解释方式是接受某高级语言的一个语句输入,进行解释并控制计算机执行,马上
11、得到这句的执行结果,然后再接受下一句。33.编译程序:就是指这样一种程序,通过它能够将用高级语言编写的源程序转换成与之在逻辑上等价的低级语言形式的目标程序(机器语言程序或汇编语言程序)。34.解释程序和编译程序的根本区别:是否生成目标代码35.句子的二义性(这里的二义性是指语法结构上的。):文法GS的一个句子如果能找到两种不同的最左推导(或最右推导),或者存在两棵不同的语法树,则称这个句子是二义性的。36文法的二义性:一个文法如果包含二义性的句子,则这个文法是二义文法,否则是无二义文法。37.LL(1)的含义:(LL(1)文法是无二义的; LL(1)文法不含左递归)第1个L:从左到右扫描输入串
12、。第2个L:生成的是最左推导。1 :向右看1个输入符号便可决定选择哪个产生式38某些非LL(1)文法到LL(1)文法的等价变换: 1. 提取公因子 2. 消除左递归 39.文法符号的属性:单词的含义,即与文法符号相关的一些信息。如,类型、值、存储地址等。40.一个属性文法(attribute grammar)是一个三元组A=(G, V, F)G:上下文无关文法。V:属性的有穷集。每个属性与文法的一个终结符或非终结符相连。属性与变量一样,可以进行计算和传递。F:关于属性的断言或谓词(一组属性的计算规则)的有穷集。断言或语义规则与一个产生式相联,只引用该产生式左端或右端的终结符或非终结符相联的属性
13、。41.综合属性:若产生式左部的单非终结符A的属性值由右部各非终结符的属性值决定,则A的属性称为综合属。42.继承属性:若产生式右部符号B的属性值是根据左部非终结符的属性值或者右部其它符号的属性值决定的,则B的属性为继承属性。(1)非终结符既可有综合属性也可有继承属性,但文法开始符号没有继承属性。(2) 终结符只有综合属性,没有继承属性,它们由词法程序提供。在计算时: 综合属性沿属性语法树向上传递(即传递信息的方向是自下而上);继承属性沿属性语法树向下传递(即传递信息的方向是自上而下)。 43.语法制导翻译:是指在语法分析过程中,完成附加在所使用的产生式上的语义规则描述的动作。44.语法制导翻
14、译实现:对单词符号串进行语法分析,构造语法分析树,然后根据需要构造属性依赖图,遍历语法树并在语法树的各结点处按语义规则进行计算。45.中间代码(中间语言):1、是复杂性介于源程序语言和机器语言的一种表示形式。2、一般,快速编译程序直接生成目标代码。3、为了使编译程序结构在逻辑上更为简单明确,常采用中间代码,这样可以将与机器相关的某些实现细节置于代码生成阶段仔细处理,并且可以在中间代码一级进行优化工作,使得代码优化比较容易实现。46.何谓中间代码:源程序的一种内部表示,不依赖目标机的结构,易于代码的机械生成。47.为何要转换成中间代码:(1)逻辑结构清楚;利于不同目标机上实现同一种语言。(2)便
15、于移植,便于修改,便于进行与机器无关的优化。48.中间代码的几种形式:逆波兰式(后缀式) ,三地址码(三元式、四元式、间接三元式 )49.符号表的一般形式:一张符号表的的组成包括两项,即名字栏和信息栏。 信息栏包含许多子栏和标志位,用来记录相应名字和种种不同属性,名字栏也称主栏。主栏的内容称为关键字(key word)。50.符号表的功能:(1)收集符号属性 (2) 上下文语义的合法性检查的依据: 检查标识符属性在上下文中的一致性和合法性。(3)作为目标代码生成阶段地址分配的依据51.符号的主要属性及作用:1. 符号名 2. 符号的类型 (整型、实型、字符串型等)3. 符号的存储类别(公共、私
16、有)4. 符号的作用域及可视性 (全局、局部) 5. 符号变量的存储分配信息 (静态存储区、动态存储区)52.存储分配方案策略:静态存储分配;动态存储分配:栈式、 堆式。 53.静态存储分配:1、基本策略:在编译时就安排好目标程序运行时的全部数据空间,并能确定每个数据项的单元地址。2、适用的分配对象:子程序的目标代码段;全局数据目标(全局变量)3、静态存储分配的要求:不允许递归调用,不含有可变数组。FORTRAN程序是段结构,不允许递归,数据名大小、性质固定。 是典型的静态分配54.动态存储分配 :1、如果一个程序设计语言允许递归过程、可变数组或允许用户自由申请和释放空间,那么,就需要采用动态
17、存储管理技术。2、两种动态存储分配方式:栈式,堆式栈式动态存储分配策略:将整个程序的数据空间设计为一个栈。【例】在具有递归结构的语言程序中,每当调用一个过程时,它所需的数据空间就分配在栈顶,每当过程工作结束时就释放这部分空间。55.过程所需的数据空间包括两部分:一部分是生存期在本过程这次活动中的数据对象。如局部变量、参数单元、临时变量等;另一部分则是用以管理过程活动的记录信息(连接数据)。56.活动记录(AR):一个过程的一次执行所需要的信息使用一个连续的存储区来管理,这个区 (块)叫做一个活动记录。构成:1、临时工作单元;2、局部变量;3、机器状态信息;4、存取链;5、控制链;6、实参;7、
18、返回地址57.什么是代码优化所谓优化,就是对代码进行等价变换,使得变换后的代码运行结果与变换前代码运行结果相同,而运行速度加快或占用存储空间减少。58.优化原则:等价原则:经过优化后不应改变程序运行的结果。 59.有效原则:使优化后所产生的目标代码运行时间较短,占用的存储空间较小。 60.合算原则:以尽可能低的代价取得较好的优化效果。61.常见的优化技术:(1) 删除多余运算(删除公共子表达式) (2) 代码外提 +删除归纳变量+ (3)强度削弱; (4)变换循环控制条件 (5)合并已知量与复写传播 (6)删除无用赋值62.基本块:程序中只有一个入口和一个出口的一段顺序执行的语句序列,称为程序
19、的一个基本块。64. 遍:指编译程序对源程序或中间代码程序从头到尾扫描一次。65.无环路有向图(DAG):如果有向图中任一通路都不是环路,则称庐有向图为无环路有向图,简称DAG66.语法分析:按文法的产生式识别输入的符号串是否为一个句子的分析过程。67.二义性文法:如果一个文法存在某个句子对应两棵不同的语法树,则称这个文法是二义性文法。68.后缀式:种把运算量写在前面,把算符写在后面的表示表达式的方法。 69.直接推导和推导直接推导:令G=(VT,VN,S,P), 若AP, 且,(VTVN)*称A直接推出,表示成A 同时也称是A的直接推导,或称 直接归约到A。推导:如果存在一个直接推导序列:0
20、12 n(n0)表示成0+n,称从0到n的长度为n的推导。0*n,或者0=n或者0+n .70.语言:设文法G(VT,VN,S,P)。如果S*,则称是一个句型。仅含终结符号的句型是一个句子。语言L(G)是由文法G产生的所有句子所组成的集合:L(G)|S*且VT*71.单词符号:由词法规则确定的,具有独立意义的最基本的结构。它一般包括:基本字,标识符,常数,运算符和界符。72. 上下文无关文法:它是这样的一种文法,它所定义的语法范畴(或语法单位)完全独立于这种范畴可能出现的环境之外,不宜描述自然语言。73. LL(k)分析法:第一个L表示从左到右扫描输入串,第二个L表示最左推导,k表示分析时每一
21、步需向前查看k个符号。74. LR(k)分析法:第一个L表示从左到右扫描输入串,第二个R表示最左推导的逆过程(既最右归约),分析时每一步需向前查看k个符号。75. 算符优先分析:所谓算符优先分析就是定义算符之间的某种优先关系,借助于这种优先关系寻找“可归约串”和进行归约。76.什么是属性文法:它是在上下文无关文法的基础上,为每个文法符号配备若干相关的“值”(称为属性)。这些属性代表与文法符号相关的信息。77.有哪些存储分配策略?并叙述何时用何种存储分配策略?静态分配策略:在编译时对所有数据对象分配固定的存储单元,且在运行时始终保持不变。栈式动态分配策略:在运行时把存储器作为一个栈进行管理,每当
22、调用一个过程,所需存储空间就动态地分配于栈顶,一旦退出,所占空间就予以释放。堆式动态分配策略:在运行时把存储器组织成堆结构,凡申请者从堆中分给一块凡释放者退回给堆。78.编译过程中可进行的优化如何分类?最常用的代码优化技术有哪些?依据优化所涉及的程序范围,可分为局部优化,循环优化和全局优化三种类型。最常用的代码优化技术有删除公共子表达式、复写传播、删除无用代码、代码外提、强度消弱、删除归纳变量等。79.一个编译程序的代码生成要着重考虑哪些问题?代码生成器的设计要着重考虑目标代码的质量问题,而衡量目标代码的质量主要从占用空间和执行效率两个反面来综合考虑。80. 词法分析器的输出结果是词法分析程序
23、的功能是读入源程序,输出单词符号。单词符号是一个程序设计语言的基本语法符号。单词符号一般分为下列五种:关键字 标识符 常数 运算符 界符81. LR项目集规范族的项目类型分为如下4种:移进项目 归约项目 待约项目 接受项目 82. LR项目集规范族的项目合并同心集后可能出现什么问题?(1)同心集合并后心仍相同,超前搜索为原全集(2)合并同心集后,转换函数自动合并(3)若G是LR(1)的文法,合并同心集后,不会有移进,归约冲突,可能会有归约归约冲突(4)合并同心集后,可能推迟发现错误的时间,但错误出现位置正确,错误是归约。83.字母表:符号的非空有穷集合。84.符号:语言中最基本的不可再分的单位
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 编译 原理
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-2200326.html