2019年编译原理期末总结复习

上传人:明*** 文档编号:99061568 上传时间:2019-09-17 格式:DOC 页数:19 大小:246.50KB
返回 下载 相关 举报
2019年编译原理期末总结复习_第1页
第1页 / 共19页
2019年编译原理期末总结复习_第2页
第2页 / 共19页
2019年编译原理期末总结复习_第3页
第3页 / 共19页
2019年编译原理期末总结复习_第4页
第4页 / 共19页
2019年编译原理期末总结复习_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《2019年编译原理期末总结复习》由会员分享,可在线阅读,更多相关《2019年编译原理期末总结复习(19页珍藏版)》请在金锄头文库上搜索。

1、编译原理期末总结复习 篇一: 一、简答题 1.什么是编译程序? 答:编译程序是一种将高级语言程序(源程序)翻译成低级语言(目标程序)的程序。 将高级程序设计语言程序翻译成逻辑上等价的低级语言(汇编语言,机器语言)程序的翻译程序。 2.请写出文法的形式定义? 答:一个文法G抽象地表示为四元组G=(Vn,Vt,P,S) 其中Vn表示非终结符号 Vt表示终结符号,VnVt=(字母表),VnVt= S是开始符号, P是产生式,形如:(V+且至少含有一个非终结符号,V*) 3.语法分析阶段的功能是什么? 答:在词法分析的基础上,根据语言的语法规则,将单词符号串分解成各类语法短语(例: 程序、语句、表达式

2、)。确定整个输入串是否构成语法上正确的程序。 4.局部优化有哪些常用的技术? 答:优化技术1删除公共子表达式 优化技术2复写传播 优化技术3删除无用代码 优化技术4对程序进行代数恒等变换(降低运算强度) 优化技术5代码外提 优化技术6强度削弱 优化技术7删除归纳变量 优化技术简介对程序进行代数恒等变换(代数简化) 优化技术简介对程序进行代数恒等变换(合并已知量) 5编译过程分哪几个阶段? 答:逻辑上分五个阶段:词法分析、语法分析、语义分析与中间代码生成、代码优化、目 标代码生成。每个阶段把源程序从一种表示变换成另一种表示。 6.什么是文法? 答:文法是描述语言的语法结构的形式规则。是一种工具,

3、它可用于严格定义句子的结构; 用有穷的规则刻划无穷的集合;文法是被用来精确而无歧义地描述语言的句子的构成方式;文法描述语言的时候不考虑语言的含义。 7.语义分析阶段的功能是什么? 答:对语法分析所识别出的各类语法范畴分析其含义,进行初步的翻译(翻译成中间代码); 并对静态语义进行审查。 8.代码优化须遵循哪些原则? 答:等价原则:不改变运行结果 有效原则:优化后时间更短,占用空间更少 合算原则:应用较低的代价取得较好的优化效果 9.词法分析阶段的功能是什么? 答: 逐个读入源程序字符并按照构词规则切分成一系列单词 任务:读入源程序,输出单词符号 滤掉空格,跳过注释、换行符 追踪换行标志,指出源

4、程序出错的行列位置 宏展开, 10.什么是符号表? 答:符号表在编译程序工作的过程中需要不断收集、记录和使用源程序中一些语法符号 11.什么是属性文法? 答:是在上下文无关文法的基础上,为每个文法符号(含终结符和非终结符)配备若干个属 性值,对文法的每个产生式都配备了一组属性计算规则(称为语义规则)。在语法分析过程中,完成语义规则所描述的动作,从而实现语义处理。 12.什么是基本块 答:是指程序中一顺序执行的语句序列,其中只有一个入口语句和一个出口语句,入口 是其第一个语句,出口是其最后一个语句。 13.代码优化阶段的功能是什么? 答:对已产生的中间代码进行加工变换,使生成的目标代码更为高效(

5、时间和空间)。 14.文法分哪几类? 答:文法有四种:设有G=(Vn,Vt,P,S),不同类型的文法只是对产生式的要求不同: 型文法(短文文法):G的每个产生式满足:V+且中至少含有一个非终结符,V* 型文法(上下文有关文法):如果G的每个产生式均满足|=|,仅当除外,但S不得出现在任何产生式的右部 型文法(上下文无关文法):G的每个产生式为A,A是一非终结符,V* 型文法(正规文法):G的每个产生式的形式都是:AB或A,其中A,B是非终结符,是终结符串。(右线性文法)。 15.循环优化常用的技术有哪些? 答:代码外提;强度削弱;删除归纳变量。 16.什么是算符优先文法? 答:算符文法G的任何

6、终结符a,b之间要么没有优先关系,若有优先关系, 至多有 中的一种成立,则G为一算符优先文法。 二、计算题 (一)推导、最左推导、最右推导和语法树,复习表达式文法及相关例题。 1.表达式的推导 例:G=(E,i,+,*,(,),P,E) P:EE+E|E*E|(E)|i 答:表达式(i)和(i+i)*i的推导: E(E)(i) EE*E(E)*E(E+E)*E(i+E)*E(i+i)*E(i+i)*i EE*EE*i(E)*i(E+E)*i(E+i)*i(i+i)*i (i+i)*i的最左推导过程: EE*E(E)*E(E+E)*E(i+E)*E(i+i)*E(i+i)*i (i+i)*i的最

7、右推导过程: EE*EE*i(E+E)*i(E+i)*i(i+i)*i 2语法树 例:对文法G=(E,i,+,*,(,),P,E) P:EE+E|E*E|(E)|i 答:句子(i+i)*i的语法树: 例:G=(E,i,+,*,(,),P,E) P:EE+E|E*E|(E)|i 答:句子(i*i+i)的语法树: (1)E(E)(E+E)(E*E+E)(i*E+E)(i*i+i) (二)给定语言求文法 (三)逆波兰式 篇二: 翻译程序:把一种语言程序转换成另一种语言程序,且在功能上是相同的这样的程序。编译程序:把高级语言转换成低级语言,且在功能上是相同的这样的程序。 解释程序:边解释边执行源程序的

8、程序。区别:编译程序有中间代码,而解释程序没有。编译过程的五个阶段: 1、词法分析任务:对构成源程序的字符串进行扫描和分解,识别出一个个单词。 2、语法分析任务:在词法分析的基础上,根据语言规则,把单词符号串分解成各类语法 单位。 3、语义分析和中间代码产生任务:对语法分析所识别出的各类语法范畴,分析其含义, 并进行初步翻译。 4、优化任务:对前段产生的中间代码进行加工变换,以期在最后阶段能产生出更为高效 的目标代码。 5、目标代码生成任务:把中间代码变换成特定机器上的低级语言代码。 编译程序的七个部分词法分析器,语法分析器、语义分析与中间代码产生器、优化器、目标代码生成器、表格管理和出错处理

9、。 编译程序生成的五个办法:机器语言、高级语言、移植、自编译方式和使用工具自动生成。词法规则:指单词符号的形成规则。(也就是正规式) 语法规则:规定了如何从单词符号形成更大的结构。就是语法单位的形成规则。空字:不包含任何符号的序列。 闭包:中所有的符号组成的集合。 上下文无关文法是指:所定义的语法范畴是完全独立于这种范畴可能出现的环境的文法。上下文无关文法的四个组成部分:一组终结符号、一组非终结符号、一个开始符号和一组产生式。 终结符号也就是不可再分的基本符号。 非终结符号是用来代表语法范畴,表示一定符号串的集合。 开始符号是语言中我们最感兴趣的语法范畴。 产生式是定义语法范畴的书写规则。 句

10、子:文法中从开始符号推导的终结符号串。 句型:从开始符号推导的符号串。 语言:文法中所有句子的集合。 程序语言的单词符号分为五种:关键字、标识符、常数、运算符和界符。 二元式表示:(种类,属性) 正规式的运算符有三种:或,连接和闭包。优先顺序是:闭包,连接,或。 DFA怎么识别字:若存在一条从初态结点到某一终态结点的通路,且这条通路上所有弧的标记符连接成的字是a,则称a可为DFA所识别。 DFA怎么识别空字:若DFA的初态结点同时又是终态结点,则空字可为DFA所识别。NFA怎么识别字:若存在一条从某一初态结点到终态结点的通路,且这条通路上所有弧的标记字依序连接成的字等于a,则称a可为NFA识别

11、。 NFA怎么识别空字:若M的某些结点即是初态又是终态结点,或者存在一条从某个初态结点到某个终态结点的空通路,那么,空字可为M所识别。 语言的语法结构是用上下文无关文法描述的。 语法分析分为两类:自上而下分析法,自下而上分析法。 自上而下分析法面临的问题:1.文法的左递归问题。2.回溯3.成功可能是暂时的,产生虚假匹配。4.难于知道输入串中出错的确切位置。5.效率低,代价高。 为什么消除左递归?因为含有左递归的文法将自上而下分析的过程陷入无限循环。为什么消除回溯?因为回溯统一做一大堆无效的工作。 自下而上分析法:从输入串开始,逐步进行归约,知道归约到文法的开始符号。短语:符号串推导过程中某非终

12、结符推导的部分。 直接短语:符号串推导过程中某非终结符一步推导的部分。 句柄:一个句型的最左直接短语。 最左归约是最有推导的逆过程。 中间语言形式:后缀式,三元式,四元式,间接三元式。 中间语言的好处:1.便于进行与机器无关的代码优化工作。2.使编译程序改变目标机更容易。 3.使编译程序的结构在逻辑上更为简单,以中间语言为界面,编译前端和后端的借口更清晰。 篇三: (1)程序设计语言 机器语言:由0、1代码构成,不需翻译就可直接执行其程序。 汇编语言:机器指令助记符(伪代码)形式,汇编后才可执行其程序。 高级程序设计语言:类自然语言和数学公式形式 (2)基本术语 源程序(SourceProgr

13、am):用源语言写的程序。源语言可以是汇编语言,也可以是高级程 序设计语言。 目标程序(TargetProgram):也称为“结果程序”,是源程序经翻译程序加工以后所生成 的程序。目标程序可以用机器语言表示,也可以用汇编语言或其它中间语言表示。 翻译程序(TranslatingProgram):是指把一个源程序翻译成逻辑上等价的目标程序的程序。 源程序为其输入,目标程序为其输出。 汇编程序(Assembler):是指把一个汇编语言写的源程序转换成等价的机器语言表示的目 标程序的翻译程序。 编译程序(Compiler):若源程序是用高级程序设计语言所写,经翻译程序加工生成目标程 序,则该翻译程序就称为“编译程序”,也可称为

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 总结/报告

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号