编译原理考点最新爆料哦--.docx
《编译原理考点最新爆料哦--.docx》由会员分享,可在线阅读,更多相关《编译原理考点最新爆料哦--.docx(8页珍藏版)》请在沃文网上搜索。
1、1、 编译程序涉及的三个语言 答:源语言 目标语言 实现语言2、 编译程序的概念及其结构(五个)答:编译程序(compiler)是一种翻译程序,它特指把某种高级程序设计语言翻译成具体计算机上的低级程序设计语言。源程序 词法分析 语法分析 语义分析 优化处理 目标代码生成 目标程序3、 什么是二义性文法。答:若文法中存在这样的句型,它具有两棵不同的语法树,则称该文法是二义性文法。4、 超前搜索技术答:词法分析程序在读取单词时,为了判断是否已读入整个单词的全部字符,常采取向前多读取字符并通过读取的字符来判别,即所谓超前搜索技术。5、“遍”的概念答:编译程序对源程序或等价程序从头至尾扫描的次数。6、
2、上下文无关文法的定义答:文法是规则的有限集,其中的上下文无关文法可定义为四元组: G(Z)=(VN, VT, Z, P)每个元素:1、 VN : 非终结符集(定义的对象集,如:语法成分等),它的每个元素是非终结符号。2、 VT : 终结符集(字母表),它的每个元素是终结符号。3、 Z : 开始符号(研究范畴中,最大的定义对象);4、 P : 规则集(又称产生式集);每个规则:1、 A - 或者 A - | 2、 其中: 描述符号 : -(定义为),|(或者是)3、 文法符号 : Z,AVN,(VN+VT)*7、词法分析,自上而下以及自下而上语法分析的基本概念,输入,输出,分析方法。答:(1)
3、词法分析是编译过程中的一个阶段,在语法分析前进行,也可以和语法分析结合在一起作为一遍。i. 输入:源程序字符串ii. 输出:等价的属性字序列(内部表示形式)iii. 词法分析器又称扫描器,是执行词法分析的程序。任务有二: (1) 识别单词 从用户的源程序中把单词分离出来; (2) 翻译单词 把单词转换成机内表示,便于后续处理。(2) 自上而下语法分析是从文法的开始符号出发,反复使用不同产生式向下推导以谋求与输入符号串相匹配。对任何输入串,试图用一切可能的办法,从文法开始符号(根结)出发,自上而下地为输入串建立一棵语法树。i. 输入符号串指的是由单词符号(文法的终结符)组成的有限序列(3) 自下
4、而上分析法就是从输入串开始,逐步进行“归约”,直至归约到文法的开始符号;或者说从语法树的末端开始,步步向上“归约”,直到根结。i. 输入串在这里是指从词法分析器送来的单词符号组成的二元式的有限序列(单词种别,单词符号的属性值)。8、LL(k)的含义,以及LL(1)文法的判定。P73答:判断某给定文法是否为LL(1)文法其条件为: (1)文法不含左递归。 (2)对于文法中每个非终结符A的各个产生式的候选首符集两两不相交。即,若 A a1 | a2 |。| an 则: FIRST(ai) FIRST(aj) =f (i j ) (3) 对文法中每一个终结符A,若它存在某个候选首符集包含e,则 FI
5、RST(A) FLLOW(A)= f 一个文法若满足以上条件,则称该文法G为LL(1)文法.9、LR分析法答:LR(0)分析法SLR(1) 分析法LR分析法 LR(1)分析法LALR(1)分析法10、中间代码生成的依据,形式,目的。P166答:(1) 中间代码的生成方法:属性文法制导翻译语义制导翻译(2) 中间代码的形式:逆波兰式图表示法三元式四元式:最常用的形式(3) 中间代码:不是机器语言,便于生成机器语言,便于代码优化11、四元式p172答:一个四元式是一个带有四个域(field)的记录结构,这四个域分别称为op、arg1、arg2及result。域op包含一个代表运算符的内部码。三地址
6、语句x:=y op z可表示为:将y置于arg1域,z置于arg2域,x置于result域,:=为算符。带有一元运算符的语句如x:= -y或x:= y的表示中不使用arg2。而像param(过程调用)这样的运算符仅适用arg1。条件和无条件转移语句将目标标号置于result域中。通常,四元式中的arg1、arg2和result的内容都是一个指针,此指针指向有关名字的符号表入口。12、栈式存储分配p255 p245答:动态存储分配(1)栈式存储分配运行时,每进入一个过程,就在栈顶为该过程分配一块数据区,一旦退出该过程,它所占的空间也退还给系统。(2)堆式存储分配 栈式存储分配 使用栈式存储分配法
7、意味着把存储组成一个栈,运行时,每当进入一个过程(一个新的活动开始)时, 就把它的活动记录压入栈(累筑于栈顶),从而形成过程工作时的数据区,一个过程的活动记录的体积在编译时是可静态确定的。当该过程结束(过程退出)时,再把它的活动过程弹出栈。这样在栈顶的数据区也随即不复存在。允许过程(函数)递归调用的数据存储管理 1)语言特点:允许过程(函数)的递归调用,但不允许定义嵌套的过程(函数),也不许使用可变数组。如C语言。2)栈式存储分配:每进入一个过程,就有相应的数据区建立在栈顶。当程序开始运行前,用于建造数据区的栈是空栈。当开始进入主程序执行语句前,便在栈中建立全局变量和主程序数据区。在主程序中若
8、有调用过程的语句时,便在栈顶累筑该过程的活动记录。在进入过程后执行过程的可执行语句前再把局部数组累筑于栈顶,若还有调用过程的语句就重复上述过程。唉,太多了,还是看书吧13、循环优化的具体措施。P287答:主要方法循环不变运算外提(代码外提)降低运算强度(强度削弱)删除归纳变量找出程序中的循环循环语句条件转移和无条件转移构成循环找程序中的循环的方法程序数据流程分析程序控制流程分析是数据流程分析的基础14、翻译程序,编译程序的异同。答: 翻译程序:将一种语言程序转换为另一种语言程序的程序, 按照对象不同分别有: 转换程序 - 把一种高级语言转换成另一种高级语言; 编译程序 - 把某种高级语言转换成
9、某种低级语言; 解释程序 - 把某种高级语言转换成某种低级语言; 汇编程序 - 把汇编语言转换为机器语言的翻译程序。 编译程序(compiler)是一种翻译程序,它特指把某种高级程序设计语言翻译成具体计算机上的低级程序设计语言。解释程序(interpreter)也是一种翻译程序,将某高级语翻译成具体计算机上的低级程序设计语言。 编译程序与解释程序的主要区别: 前者有目标程序而后者无目标程序; 前者运行效率高而后者便于人机对话。15、NFA、DFA的定义,区别,以及转换。DFA的最小化。答:(1) DFA定义:一个确定的有穷自动机(DFA)M是一个五元组: M=(S,s0,F)其中1.S是一个有
10、穷集,它的每个元素称为一个状态;2.是一个有穷字母表,它的每个元素称为一个输入符号,所以也称为输入符号表;3. 是转换函数,是在SS上的映射,即,如 (s,a)=s,(sS,sS)就意味着,当前状态为s,输入符为a时,将转换为下一个状态s,我们把s称作s的一个后继状态;4. s0S是唯一的一个初态;5.F S是一个终态集,终态也称可接受状态或结束状态。(2) NFA定义:一个不确定的有穷自动机(NFA)M是一个五元组: M=(S,S0,F)其中1.S是一个有穷集,它的每个元素称为一个状态;2.是一个有穷字母表,它的每个元素称为一个输入符号,所以也称为输入符号表;3. 是转换函数,是在S*S上的
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
20 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译 原理 考点 最新 爆料