《编译原理》考试说明.docx
- 文档编号:10164535
- 上传时间:2023-02-09
- 格式:DOCX
- 页数:14
- 大小:22.34KB
《编译原理》考试说明.docx
《《编译原理》考试说明.docx》由会员分享,可在线阅读,更多相关《《编译原理》考试说明.docx(14页珍藏版)》请在冰豆网上搜索。
《编译原理》考试说明
《编译原理》考试说明
本课程是计算机专业的重要专业课之一,主要介绍程序设计语言编译构造的基本原理和基本实现方法。
本课程主要讲授形式语言、有限自动机、自上而下和自下而上的语法分析、LR分析方法、属性文法和语法制导翻译、语义分析的蹭代码产生、存储器的动态分配与管理、符号表的组织与管理、优化问题、代码生成等内容。
通过本课程学习,使学生对编译的基本概念、原理和方法有完整的和清楚的理解,并能正确地、熟练地运用。
一、课程的基本要求
通过本课程的学习,应使学生达到以下基本要求:
1、正确理解什么是编译程序;了解编译程序工作的基本过程及其各阶段的基本任务;熟悉编译程序总框;了解编译程序的生成过程和构造工具。
2、理解程序语言词法、语法和语义等概念;熟悉高级程序语言一般结构和主要共同特征。
正确理解上下文无关文法基本概念,包括:
文法的定义、编写、句型、句子、语言、语法树、二义性等;理解三种参数传递方式:
传值、传地址、传名的含义。
3、理解词法分析器功能及形式;熟练掌握词法分析器设计的原理,掌握运用状态转换图进行词法分析器设计。
4、正确理解自上而下分析的基本思想;熟练掌握递归下降分析基本方法:
消除左递归,消除回溯,构造递归下降子程序;掌握预测分析程序的基本原理和预测分析表构造;理解LL
(1)方法的定义。
5、正确理解自下而上语法分析的基本思想,以及归约、短语、句柄、分析树等概念;掌握算符优先分析基本方法:
算符优先表和和算符优先函数构造技术。
6、正确理解语法制导翻译基本原理;掌握基于属性文法的处理方法,了解自上而下分析制导翻译基本思想和实现方法。
7、熟悉常见的几种中间语言:
四元式、三元式、逆波兰表示;掌握各种语句到四元式的翻译方法,包括:
简单算术表达式,布尔表达式,控制语句,数组引用,过程调用等。
8、理解符号表的作用及符号表组织和使用方法,了解名字的作用范围,了解符号表中一般应包含的内容。
9、正确理解目标程序运行进存储空间的使用和组织管理方式;理解静态分配和动态存储分配基本思想;掌握FORTRAN存储分配的处理方式;掌握栈式动态分配中活动记录的作用、组织、内容及使用;了解嵌套过程语言程序运行时整个运行栈的内容的组织。
10、正确理解代码优化的定义和各种可能的优化概念;掌握用DAG表示进行局部优化的方法。
11、正确理解代码生成过程的基本问题,理解待用信息、寄存器描述和地址描述等概念;掌握简单代码生成算法、寄存器分配策略。
12、了解并行计算机及其编译系统的基本概念。
二、每章主要内容和重点
第一章引论
主要内容:
编译程序,编译过程概述,编译程序的结构,编译程序与程序设计环境,编译程序生成,学习构造编译程序。
重点:
编译程序工作的基本过程及其各阶段的基本任务,编译程序总框。
第二章高级语言及其语法描述
主要内容:
程序语言定义,初等数据类型,数据结构,高级高级语言的一般特性,程序结构,语句与控制结构,上下文无关文法,语法分析树与二义性。
重点:
上下文无关文法,程序语言定义参数传递。
第三章词法分析
主要内容:
词法分析器任务,词法分析器设计,正规表达式与有限自动机,词法分析器自动生成。
重点:
词法分析器的任务与设计,状态转换图。
第四章语法分析—自上而下分析
主要内容:
语法分析器的功能,自上而下语法分析(递归下降分析法,预测分析程序),LL
(1)分析法,递归下降分析程序构造,预测分析程序,自上而下分析的错误诊察,语义错误诊察。
重点:
递归下降子程序,预测分析表构造,LL
(1)文法。
第五章语法分析—自下而上分析
主要内容:
自下而上语法分析(算符优先分析法),算符优先分析,LR分析器,LR(0)项目集族和LR(0)分析表的构造,SLR分析表的构造,规范LR分析表的构造,出错处理概述,词法分析阶段的错误诊察,语法分析(自下而上)阶段的错误诊察,语法分析器自动产生工具YACC。
重点:
归约,算符优先表构造,LR分析法。
第六章属性文法和语法制导翻译
主要内容:
属性文法,基于属性文法的处理方法,S-属性文法的自下而上计算,L-属性文法的自顶向下翻译,自下而上计算继承属性。
重点:
语法制导翻译基本思想,语法制导翻译概述,基于属性文法的处理方法,自下而上分析制导翻译概述。
第七章语义分析和中间代码产生
主要内容:
中间语言,说明语句,赋值语句的翻译,布尔表达式的翻译,控制语句的翻译,过程调用的处理各种常见中间语言形式,各种语句到四元式的翻译。
重点:
三种中间语言:
四元式、三元式、逆波兰表示;算术表达式的翻译,布尔表达式的翻译,控制语句的翻译。
第八章符号表
主要内容:
符号表的组织与作用,整理与查找,名字的作用范围,符号表的内容。
重点:
符号表的作用与内容。
第九章运行时存储空间组织
主要内容:
目标程序运行时的活动,运行时存储器的划分,静态存储管理,简单的栈式存储分配的实现,嵌套过程语言的栈式实现,堆式动态存储分配。
重点:
静态分配策略和动态分配策略基本思想,嵌套过程语言栈式分配,活动记录、运行时栈的组织。
第十章优化
主要内容:
优化概述,局部优化,基本块的DAG表示及其应用,控制流分析和循环查找算法,到达定值与引用定值链,循环优化。
重点:
局部优化;DAG的构造与应用。
第十一章代码生成
主要内容:
目标机器模型,一个简单代码生成器,寄存器分配,DAG目标代码,窥孔优化。
重点:
简单代码生成器,寄存器分配策略。
第十二章并行编译基础
主要内容:
并行计算机及其编译系统,向量与向量的次序,循环模型与索引空间,输入与输出集合,语句的执行顺序,依赖关系,依赖关系问题,依赖关系测试,循环的向量化与并行化,循环变换技术。
重点:
并行计算机及其编译系统。
三、复习题
第一次作业
一、填空题
1、编译程序的工作过程一般可划分为__________等几个基本阶段,同时还会伴有__________和__________。
2、若源程序是用高级语言编写的,目标程序是__________,则其翻译程序称为编译程序。
3、编译方式与解释方式的根本区别在于____________________。
4、如果编译程序生成的目标程序是机器代码程序,则源程序执行分为两大阶段:
__________和__________。
如果编译生成的目标程序是汇编评议程序,则源程序的执行分成三个阶段:
__________、__________、和__________。
5、编译过程中扫描器所完成的任务是从_______________中识别出一个个具有_______。
6、确定的有穷自动机是一个_______________通常表示为_______________。
7、对于某个压缩了的上下无关文法,当把每个文法符号联系于一组属性,且让该文法的规则附加以__________时,称该文法为属性文法。
8、语法制导的编译程序能同时进行__________分析和__________分析。
9、文法符号的属性有两种,一种称为__________,另一种称为。
10、编译过程中,常见的中间语言形式有__________、__________、__________和__________。
11、表达式a∧b∨c∧(b∨x=0∧c)的逆波兰表示为__________。
12、过程与过程引用中信息交换的方法是__________和__________。
13、在PASCAL中,由于允许用户动态申请与释放内存空间,所以必须采用__________分配技术。
14、按传结果的方式进行形实参数结合,是一种把__________和__________的特点相结合的参数传递方式。
15、程序语言是一个记号系统,它主要由__________和__________两个方面定义,有时语言定义也包含__________的信息。
16、一个上下文无关立法G包括四个组成部分:
一组__________,一组__________,一个__________,以及一组__________。
17、在进行语法分析时,可用一张图表示一个句型的推导,这种表示称为。
18、自顶向下语法分析方法的基本思想是:
从____________出发,不断建立____________,试图构造一个推导序列,最终由它推导出与输入符号串相同的_______________。
19、自顶向下语法分析方法会遇到的主要问题有____________和____________。
20、LL
(1)分析法中,第一个L的含义是____________,第二个L的含义是____________,“1”的含义是____________。
21、自底向上语法分析的基本思想是:
从待输入的符号串开始,利用文法的规则步步向上进行__________,试图__________到文法的__________。
22、LR(0)分析法的名字中,“L”的含义是__________,“R”的含义是__________,“0”的含义是__________。
21、根据所涉及程序的范围,优化可分为局部优化、__________和全局优化三种。
22、编译程序进行数据流分析的目的是__________。
23、局部优化是局限于一个__________范围内的一种优化。
24、编译程序设计者在设计目标代码生成时,应根据每一语法成分的性能为其设计相应的目标代码结构,使得这种性能通过_________体现出来,并通过_________的运行而得到实现。
25、编译程序生成的目标代码通常有三种形式:
_________、_________和_________。
二、单选题
1、在使用高级语言编程时,首先可通过编译程序发现源程序的全部
(1)错误和部分
(2)错误。
a.语法b.语义c.语用d.运行
2、用高级语言编写的程序经编译后产生的程序叫
(1)。
用不同语言编写的程序产生
(2)后,可用(3)连接在一起生成机器可执行的程序。
在机器中真正执行的是(4)。
3、高级语言的语言处理程序分为解释程序和编译程序两种。
编译程序有五个阶段,而解释程序通常缺少
(1)和
(2)。
其中,(3)的目的是使最后阶段产生的目标代码更为高效。
与编译系统相比,解释系统(4)。
解释程序处理语言时,大多数采用的是(5)方法。
(6)就是一种典型的解释程序。
(1)、
(2)(3)a.中间代码生成b.目标代码生成c.词法分析d.语法分析e.代码优化
(4)a.比较简单,可移植性好,执行速度快b.比较复杂,可移植性好,执行速度快
c.比较简单,可移植性差,执行速度慢d.比较简单,可移植性好,执行速度慢
(5)a.源程序命令被逐个直接解释执行b.先将源程序转化为中间代码,再解释执行
c.先将源程序解释转化为目标程序,再执行d.以上方法都可以
(6)a.BASICb.Cc.FORTRANd.PASCAL
4、编译程序生成的目标程序__________是可执行的程序。
a.一定b.不一定
5、一般程序设计语言的定义都涉及__________三个方面。
(1)语法
(2)语义(3)语用(4)程序基本符号的确定
供选答案:
a.
(1)
(2)(3)b.
(1)
(2)(4)c.
(1)(3)(4)d.
(2)(3)(4)
6、程序语言一般分为
(1)和
(2)两大类,其中(3)通常又称为面向机器的语言。
面向机器语言指的是(4),其特点是(5),在此基础上产生了与人类自然语言比较接近的(6)
(1)
(2)(3)(6)a.高级语言b.专用语言c.低级语言d.通用程序语言
(4)a.用于解决机器硬件设计问题的语言b.特定计算机系统所固有的语言
c.各种计算机系统都通用的语言d.只能在一台计算机上使用的语言
(5)a.程序的执行效率低,编制效率低,可读性差
b.程序的执行效率高,编制效率高,可读性强
c.程序的执行效率低,编制效率高,可读性强
d.程序的执行效率高,编制效率低,可读性差
7、编译过程中扫描器的任务包括______。
①组织源程序的输入
②按词法规则分割出单词,识别出其属性,并转换成属性字的形式输出
③删除注解
④删除空格及无用字符
⑤行计数、列计数
⑥发现并定位词法错误
⑦建立符号表
供选答案:
A、②③④⑦B、②③④⑥⑦C、①②③④⑥⑦D、①②③④⑤⑥⑦
8、下述正则表达式中_______与(a*+b)*(c+d)等价(即有相同符号串集)。
(x+y亦可写作x|y)
①a*(c+d)+b(c+d)
②a*(c+d)*+b(c+d)
③a*(c+d)+b*(c+d)
④(a+b)*c+(a+b)*d
⑤(a*+b)*c+(a*+b)*d
供选答案:
A、①②B、②③C、③④D、④⑤
9、______这样一些语言,它们能被确定的有穷自动机识别,但不能用正则表达式表示。
A、存在B、不存在C、无法判定是否存在
10、编译过程中,语法分析器的任务是____________。
①分析单词是怎样构成的
②分析单词串是如何构成语句和说明的
③分析语句和说明是如何构成程序的
④分析程序的结构
供选答案:
A、②③B、④C、②③④D、①②③④
11、语法分析的常用方法是____________。
①自顶向下②自底向上③自左向右④自右向左
供选答案:
A、①②③④B、①②C、③④D、①②③
12、编译程序中的语法分析器接受以___________为单位的输入,并产生有关信息供以后各阶段使用。
A、表达式B、产生式C、单词D、语句
13、算符优先分析法每次都是对__________进行归约,简单优先分析法每次都是对__________进行归约。
A、最左短语B、简单短语C、句柄D、素短语E、最左素短语
14、已知文法G[E]:
E:
:
=E+T|TT:
:
=T*F|FF:
:
=(E)|i
该文法__________简单优先文法。
A、是B、不是
15、编译过程中,比较常见的中间语言有__________。
①波兰表示
②逆波兰表示
③三元式
④四元式
⑤树形表示
供选项有
A、①③④B、②③④C、①③④⑤D、②③④⑤
16、表达式-a+b*(-c+d)的逆波兰式是__________。
A、ab+-cd+-*B、a-b+c-d+*C、a-b+c-d+*D、a-bc-d+*+
17、在编译程序中安排中间代码生成的目的是__________。
①便于进行存储空间的组织
②利于目标代码的移植
③利于编译程序的移植
④利于目标代码的移植
⑤利于提高目标代码的质量
供选项有
A、②④B、②④⑤C、①②③⑤D、①②③④⑤
18、对任何一个编译程序来说,产生中间代码是__________。
A、不可缺少的B、不一定必要的
19、编译程序使用__________区别标识符的作用域。
A、说明标识符的过程或函数名B、说明标识符的过程或函数的静态层次
C、说明标识符的过程或函数的动态层次C、标识符的行号
20、下列关于标识和名字的叙述中,正确的为__________。
A、标识符有一定的含义B、名字是一个没有意义的字符序列
C、名字有确切的属性D、都不对
21、编译程序在其工作过程中使用最多的数据结构是__________。
它记录着源程序中的各种信息,以便查询或修改。
在这些__________中,以__________最为重要,它的生存期最长,使用也最频繁。
A、线性表B、链表C、表D、符号表
22、运行阶段的存储组织与管理的目的是__________。
①提高编译程序的运行速度
②提高目标程序的运行速度
③为运行阶段的存储分配作准备
供选项有
A、①②B、①③C、②③D、①②③
23、动态存储分配时,可以采用的分配方法有__________。
①以过程为单位的栈式动态存储分配
②堆存储分配
③最佳分配方法
供选项有
A、①B、②C、①②D、①②③
24、编译程序在优化时__________用到源程序中的注释。
A、可能要B、不可能
25、在编译程序采用的优化方法中,__________是在循环语句范围内进行的。
①合并已知常量
②删除多余运算
③删除归纳变量
④强度削弱
⑤代码外提
供选项有
A、①④B、①⑤C、①④⑤D、③④⑤
26、合并表达式中常量运算的目的是__________。
A、合并常量,使表达式中的常量尽可能少
B、合并常量,使表达式尽可能短
C、将可在编译时刻计算的常量运算在编译时刻计算出来,然后用所计算出来的值替换表达式中出现的所有这种常量运算,使得生成的代码指令尽可能少。
三、简答题
1、“含有优化部分的编译程序的执行效率高”这一说法是否正确?
为什么?
2、“解释方式与编译方式的区别在于解释程序对源程序并没进行真正的翻译。
”这一说法是否正确?
为什么?
3、简述强制式语言的特点,并举几种强制式语言的例子。
4、什么是应用式语言?
试举一例。
5、简述是面向对象语言的特点。
6、简述数据类型的要素。
7、在实现编译程序时,常将词法分析程序从语法分析中独立出来,这样做有什么好处?
8、设文法G[A]为
A→[B
B→X]|BA
X→Xa|Xb|a|b
试求出文法G[A]产生的语言对应的正则式。
9、求正则表达式(a|b)(a|b|0|1)*对应的正则文法。
10、现有正则表达式(a|b)*(aa|bb)(a|b)*,请为其构造最小化的DFA。
11、词法分析和语法分析都是对字符串进行识别,二者有何区别?
12、设有文法G[S]:
S:
:
=aBc|bAB
A:
:
=aAb|b
B:
:
=b|ε
构造其LL
(1)分析表,并分析符号串baabbb是否该文法制句子。
13、试述当且仅当文法G的每一个非终结符A的任何两个不同的产生式A→α和A→β满足什么条件时,该文法G是LL
(1)文法。
14、如何理解简单优先关系的定义?
为什么在定义“>”关系时,限制S为终结符号?
15、试列举一个不含有优先函数的优先关系矩阵的例子。
16、试比较LR(0)、SLR()、LR
(1)、LALR
(1)分析表的优缺点。
17、一般情况下,为什么语义分析部分仅产生中间代码?
18、什么是语法制导翻译?
为什么把这种方法叫语法制导翻译?
19、为什么要使用中间语言形式?
20、给出A:
=A+B*C↑(D÷E)/F的逆波兰表示(后缀式)。
21、写出下列语句的逆波兰表示:
①<变量>:
=<表达式>
②IF<表达式>THEN<语句1>ELSE<语句2>
22、为什么三元式没有放计算结果的单元。
23、给出算术表达式-(a+b)*(c+d)-(a+b+c)的四元式序列。
24、在编译过程中为什么要建立符号表?
符号表应包括哪些内容?
25、符号表的表项常包括哪些部份?
各描述什么?
26、符号表的组织方式有哪些?
它的组织取决于哪些因素?
27、简述静态存储分配的基本思想。
静态存储分配对语言有何要求?
28、动态存储分配方案如何解决数组这样的特殊数据对象的存储分配?
29、参数传递的方式有哪些?
试分别举例说明。
30、可从哪些层次上对程序进行优化?
31、与机器无关的代码优化有哪些种类?
请分别举例说明。
32、设有语句序列:
a:
=20;
b:
=a*(a+10);
c:
=a*b;
试写出合并常量后的三元式序列。
33、简述目标代码的三种形式。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译原理 编译 原理 考试 说明
![提示](https://static.bdocx.com/images/bang_tan.gif)