编译原理填空集
- 格式:doc
- 大小:37.00 KB
- 文档页数:6
1-01.编译程序的工作过程一般可以划分为词法分析,语法分析,语义分析,之间代码生成,代码优化等几个基本阶段,同时还会伴有表格处理和出错处理 .1-02.若源程序是用高级语言编写的,目标程序是机器语言程序或汇编程序,则其翻译程序称为编译程序.1-03.编译方式与解释方式的根本区别在于是否生成目标代码 .1-04.翻译程序是这样一种程序,它能够将用甲语言书写的程序转换成与其等价的用乙语言书写的程序 .1-05.对编译程序而言,输入数据是源程序,输出结果是目标程序.1-06.如果编译程序生成的目标程序是机器代码程序,则源程序的执行分为两大阶段: 编译阶段和运行阶段 .如果编译程序生成的目标程序是汇编语言程序,则源程序的执行分为三个阶段:编译阶段, 汇编阶段和运行阶段 .1-07.若源程序是用高级语言编写的,目标程序是机器语言程序或汇编程序,则其翻译程序称为编译程序。
1-08.一个典型的编译程序中,不仅包括词法分析、语法分析、中间代码生成、代码优化、目标代码生成等五个部分,还应包括表格处理和出错处理。
其中,词法分析器用于识别单词。
1-09.编译方式与解释方式的根本区别为是否生成目标代码。
2-01.所谓最右推导是指:任何一步α?β都是对α中最右非终结符进行替换的。
2-02.一个上下文无关文法所含四个组成部分是一组终结符号、一组非终结符号、一个开始符号、一组产生式。
2-03.产生式是用于定义语法成分的一种书写规则。
2-04.设G[S]是给定文法,则由文法G所定义的语言L(G)可描述为:L(G)={x│S x,x∈VT*} 。
2-05.设G是一个给定的文法,S是文法的开始符号,如果S x(其中x∈V*),则称x是文法的一个句型。
2-06.设G是一个给定的文法,S是文法的开始符号,如果S x(其中x∈VT*),则称x是文法的一个句子。
3-01.扫描器的任务是从源程序中识别出一个个单词符号。
4-01.语法分析最常用的两类方法是自上而下和自下而上分析法。
一.填空题1..已知文法G[E]:E →E+T|TT →T*F|FF →(E)|a该文法终结符集合V T = {+,*,(,),a} ,文法非终结符集合V N = {E,T,F} ,该 文法在乔姆斯基文法分类中属于 2型 文法。
2.给出下列文法的适合自上而下翻译的语义动作,使得当输入是aabb 时其输出串是12020。
(1)A →aB {printf('0');}(2)A →c {printf('1');}(3)B →Ab {printf('2');}二.选择题1..为了使编译程序能对程序设计语言进行正确的翻译,必须采用 C 方法定义程序设计语言。
A.非形式化B.自然语言猫鼠问题C.形式化D.自然语言和符号体系相结合2.设X 是符号串,符号串的幂运算x0= CA.1B.xC.εD.∅3.若有源程序是高级语言编写的程序,目标程序是 C ,则称它为编译程序。
A.汇编语言程序或高级语B. 高级语言程序或机器语言程序C.汇编语言程序或机器语言程序D.连接程序或运行程序4.编译程序对 A 程序进行翻译。
A.高级语言B.机器语言C.自然语言D.汇编语言5.编译过程中,语法分析阶段的任务是 B .A.语言识别B.识别语言单词C.识别语句D.识别程序6.字母表示的元素可以是 DA.字母B. 字母和数字C. 数字D.字母 数字和其他符号7.在规则(产生式)中,符号“→”(“::=”)表示 DA.恒等式B.等于C.取决于D.自定义8.在规则(产生式)中,符号“|”表示 BA.与B. 或C. 非D.引导开关参数9.设有文法G [S]=({S,B},{b},{S →bB|b,B →bS},S),改文法所描述的语言是 CA. L(G[S]) ={b n |n >=n 2|n >= C. L(G[S]) ={b 12+n |n >=12+n |n >=10.一个句型最左边的 C 称为该句型的句柄。
第一套一、是非题1.编译程序是对高级语言程序的解释执行。
2.一个有限状态自动机中,有且仅有一个唯一的终态。
3.一个算符优先文法可能不存在算符优先函数与之对应。
4.语法分析时必须先消除文法中的左递归。
5.LR分析法在自左至右扫描输入串时就能发现错误,但不能准确地指出出错地点。
6.波兰表示法表示表达式时无须使用括号。
7.2 型文法一定是3型文法。
8.编译过程中,语法分析器的任务是分析单词是怎样构成的。
9.并不是每个文法都能改写成LL(1)文法。
10.一个LL(1)文法一定是无二义的。
11.逆波兰法表示的表达式亦称前缀式。
12.正规文法产生的语言都可以用上下文无关文法来描述。
13.3型文法一定是2型文法。
14.如果一个文法存在某个句子对应两棵不同的语法树,则文法是二义性的。
15.计算机高级语言翻译成低級语言只有解释一种方式。
16.在编译中进行语法检查的目的是为了发现程序中所有错误。
17.甲机上的某编译程序在乙机上能直接使用的必要条件是甲机和乙机的操作系统功能完全相同。
18.每个文法都能改写为LL(1)文法。
19.递归下降法不允许任一非终极符是直接左递归的。
20.自底而上语法分析方法的主要问题是候选式的选择。
21.LR法是自顶向下语法分析方法。
22.一个句型的句柄一定是文法某产生式的右部。
23.编译程序与具体的机器有关,与具体的语言无关。
24.递归下降分析法是自顶向下分析方法。
24.综合属性是用于“自上而下”传递信息。
25.正规文法产生的语言都可以用上下文无关文法来描述。
26.逆波兰法表示的表达式亦称后缀式。
27.如果一个文法存在某个句子对应两颗不同的语法树,则称这个文法是二义的。
28.一个有限状态自动机中,有且仅有一个唯一的终态。
29.r和s分别是正规式,则有L(r|s)=L(r)L(s)。
30.确定的自动机以及不确定的自动机都能正确地识别正集。
31.词法分析作为单独的一遍来处理较好。
32.LR分析器的任务就是产生LR分析表。
1.编译程序的工作过程一般可以划分为词法分析_、_语法分析_、_语义分析、_中间代码生成、_代码优化_等几个基本阶段,同时还会伴有表格处理和出错处理(6分)。
2. 在目标代码生成阶段,符号表是地址分配的依据。
(2分)。
3. 符号表的数据结构可以是无序符号表、有序符号表、栈式符号表。
4. 词法分析阶段的错误主要是单词拼写错误,可通过最小距离匹配的办法纠正错误。
5. 在大部分现有编译中采用的方案主要有两种:动态分配方案和静态分配方案。
1.编译程序与具体的机器无关,与具体的语言有关。
2.SLR(1)分析法中,L的含义是自左向右进行分析,R含义是采用最右推导的逆过程,S含义是简单的,“1”的含义是向貌似句柄的符号串的查看一个输入符号。
4.确定的有穷自动机是一个五元组,通常表示为M(Q,∑,t,q0,F)。
5.在大部分现有编译中采用的方案主要有两种:动态分配方案和___静态____分配方案。
6.假定G是一个文法,S是它的开始符号,如果S * α,则称_α__是一个句型,仅含终结符号的句型是一个句子。
文法G所产生的句子的全体是一个语言,将它记为L(G)。
1.程序的翻译方式有两种,分别是_编译方式_和_解释方式_。
2.字的前缀是指该字的任意首部。
(2分)3.LR(1)分析法中,L的含义是自左向右进行分析,R含义是采用最右推导的逆过程-最左归约,“1”的含义是向貌似句柄的符号串后查看一个输入符号。
4.编译过程中,常见的中间语言形式有三元式、逆波兰式和四元式。
5.程序的可再入性指的是:当程序在执行时,可以_随时中断__它的执行,也可随时_执行进程__恢复其原来的_执行进程_;而且可以在_中断时间里_,又从该程序的_头上开始一个新的执行过程。
1. 编译程序工作过程中,第一段输入是源程序,最后阶段的输出为目标程序。
2.若二个正规式所表示的正规集相同,则认为二者是等价的(2分)。
3. 符号表中名字的有关信息在词法分析和语法语义分析过程中陆续填入。
《编译原理》常见题型一、填空题1.编译程序的工作过程一般可以划分为词法分析,语法分析,中间代码生成,代码优化(可省) ,目标代码生成等几个基本阶段。
2.若源程序是用高级语言编写的,目标程序是机器语言程序或汇编程序,则其翻译程序称为编译程序.3.编译方式与解释方式的根本区别在于是否生成目标代码 .5.对编译程序而言,输入数据是源程序,输出结果是目标程序 .7.若源程序是用高级语言编写的,目标程序是机器语言程序或汇编程序,则其翻译程序称为编译程序。
8.一个典型的编译程序中,不仅包括词法分析、语法分析、中间代码生成、代码优化、目标代码生成等五个部分,还应包括表格处理和出错处理。
其中,词法分析器用于识别单词。
10.一个上下文无关文法所含四个组成部分是一组终结符号、一组非终结符号、一个开始符号、一组产生式。
12.产生式是用于定义语法成分的一种书写规则。
13.设G[S]是给定文法,则由文法G所定义的语言L(G)可描述为:L(G)={x│S=>*x,x∈VT*} 。
14.设G是一个给定的文法,S是文法的开始符号,如果S*⇒x(其中x∈V*),则称x是文法的一个句型。
15.设G是一个给定的文法,S是文法的开始符号,如果S*⇒x(其中x∈V T*),则称x是文法的一个句子。
16.扫描器的任务是从源程序中识别出一个个单词符号。
17.语法分析最常用的两类方法是自上而下和自下而上分析法。
18.语法分析的任务是识别给定的终结符串是否为给定文法的句子。
19.递归下降法不允许任一非终结符是直接左递归的。
20.自顶向下的语法分析方法的关键是如何选择候选式的问题。
21.递归下降分析法是自顶向下分析方法。
22.自顶向下的语法分析方法的基本思想是:从文法的开始符号开始,根据给定的输入串并按照文法的产生式一步一步的向下进行直接推导,试图推导出文法的句子,使之与给定的输入串匹配。
23.自底向上的语法分析方法的基本思想是:从给定的终结符串开始,根据文法的规则一步一步的向上进行直接归约,试图归约到文法的开始符号。
编译原理复习题一、填空题:1、编译方式与解释方式的根本区别在于(是否生成目标代码)。
2、对编译程序而言,输入数据是(源程序),输出结果是(目标程序)。
3、如果编译程序生成的目标程序是机器代码程序,则源程序的执行分为两大阶段:(编译阶段)和(运行阶段)。
4、如果编译程序生成的目标程序是汇编语言程序,则源程序的执行分成三个阶段:(编译阶段)、(汇编阶段)和(运行阶段)。
5、自顶向下语法分析方法会遇到的主要问题有(回溯)和((左递归带来的)无限循环)。
6、LL(k)分析法中,第一个L的含义是(从左到右进行分析),第二个L的含义是(每次进行最左推导),“k”的含义是(向输入串中查看K个输入符号)。
7、LL(1)分析法中,第一个L的含义是(从左到右进行分析),第二个L的含义是(每次进行最左推导),“1”的含义是(向输入串中查看1个输入符号)。
8、自顶向下语法分析方法的基本思想是:从(识别符号)出发,不断建立(直接推导),试图构造一个推导序列,最终由它推导出与输入符号相同的(符号串)。
9、自底向上语法分析方法的基本思想是:从待输入的符号串开始,利用文法的规则步步向上进行(直接归约),试图(归约)到文法的(识别符号|开始符号)。
10、LR(0)分析法的名字中,“L”的含义是(从左到右进行分析),“R”的含义是(采用最右推导的逆过程---最左归约),“0”的含义是(向貌似句柄的符号串后查看0个输入符号)。
11、LR(1)分析法的名字中,“L”的含义是(从左到右进行分析),“R”的含义是(采用最右推导的逆过程---最左归约),“1”的含义是(向貌似句柄的符号串后查看1个输入符号)。
12、SLR(1)分析法的名字中,“S”的含义是(简单的),“L”的含义是(从左到右进行分析),“R”的含义是(采用最右推导的逆过程---最左归约),“1”的含义是(向貌似句柄的符号串后查看1个输入符号)。
13、在编译过程中,常见的中间语言形式有(逆波兰表示)、(三元式)、(四元式)和(树形表示)。
第一章一.填空题1.编译程序的工作过程一般可以划分为词法分析、语法分析、语义分析与中间代码产生、优化和生成目标程序等几个基本阶段,同时还伴有符号表管理和出错处理。
2.若源程序是用高级语言编写的,目标程序是汇编或机器语言,则其翻译程序称为编译程序。
3.编译方式与解释方式的根本区别在于运行目标程序时的控制权在解释器而不是目标程序。
4.翻译程序是这样一种程序,它能将用甲种语言书写的程序转换成与其等价的乙种语言书写的程序。
5.对编译程序而言,输入数据是高级语言(源)程序,输出结果是低级语言(目标)程序。
6.运行编译程序的计算机称宿主机,运行编译程序所产生目标代码的计算机称目标机。
7.当把编译程序划分成编译前端和编译后端时,前端主要由与源语言有关但与目标机无关的部分组成,编译后端包括编译程序中与目标机有关的部分,编译后端不依赖于源语言而仅仅依赖于中间语言。
8.描述词法规则的有效工具是词法分析器,通常使用语法分析器来描述语法规则,使用语义分析(与中间代码产生)器描述语义规则。
二.综合题(该答案仅供参考)1、给出C语言编译程序对下面语句进行编译时从词法分析到目标代码生成5个分析阶段的分析过程。
c=a+b*30;(1)给出每个阶段的输入和输出代码或其它数据形式。
(2)给出符号表,说明在哪些阶段会对符号表进行填写或查找。
(3)编译过程是否进行了代码优化?若有,请指出优化之处,并给出属于哪种优化?答:词法分析:出入源程序;输出识别出的记号流。
c=a+b*30 id1=id2+id3*30语法分析器:输入记号流,构造句子结构;输出语法树。
=id1 +id2 *id3 30语义分析与中间代码生成:出入语法树,输出中间代码变量地址数值注:赋值阶段会对符号表进行填写或查找1. id1 0 c (itr,30,,t1)2. id2 4 x (*,id3,t1,t2)3. id3 8 y (+,id2,t2,t3)4. t1 12 30 (=,t3,,id1)优化:1.(*,id3,30.0,t1)2.(+,id2,t1,id1)精简掉多余的复写传播mulf #30.0,r2 mov id2,r1 sub r1,r2 mov r2,id1第二章一.填空题1.上下文无关文法包括以下四个组成部分:一组终结符号,一组非终结符号,一个开始符号,以及一组产生式。
一.填空题1..已知文法G[E]:E →E+T|TT →T*F|FF →(E)|a该文法终结符集合V T = {+,*,(,),a} ,文法非终结符集合V N = {E,T,F} ,该 文法在乔姆斯基文法分类中属于 2型 文法。
2.给出下列文法的适合自上而下翻译的语义动作,使得当输入是aabb 时其输出串是12020。
(1)A →aB {printf('0');}(2)A →c {printf('1');}(3)B →Ab {printf('2');}二.选择题1..为了使编译程序能对程序设计语言进行正确的翻译,必须采用 C 方法定义程序设计语言。
A.非形式化B.自然语言猫鼠问题C.形式化D.自然语言和符号体系相结合2.设X 是符号串,符号串的幂运算x0= CA.1B.xC.εD.∅3.若有源程序是高级语言编写的程序,目标程序是 C ,则称它为编译程序。
A.汇编语言程序或高级语B. 高级语言程序或机器语言程序C.汇编语言程序或机器语言程序D.连接程序或运行程序4.编译程序对 A 程序进行翻译。
A.高级语言B.机器语言C.自然语言D.汇编语言5.编译过程中,语法分析阶段的任务是 B .A.语言识别B.识别语言单词C.识别语句D.识别程序6.字母表示的元素可以是 DA.字母B. 字母和数字C. 数字D.字母 数字和其他符号7.在规则(产生式)中,符号“→”(“::=”)表示 DA.恒等式B.等于C.取决于D.自定义8.在规则(产生式)中,符号“|”表示 BA.与B. 或C. 非D.引导开关参数9.设有文法G [S]=({S,B},{b},{S →bB|b,B →bS},S),改文法所描述的语言是 CA. L(G[S]) ={b n |n >=n 2|n >= C. L(G[S]) ={b 12+n |n >=12+n |n >=10.一个句型最左边的 C 称为该句型的句柄。
《编译原理》常见题型一、填空题1、编译程序的工作过程一般可以划分为词法分析,语法分析,语义分析,中间代码生成,目标代码生成等几个基本阶段。
2、若源程序是用高级语言编写的,目标程序是机器语言程序或汇编程序,则其翻译程序称为编译程序。
3、编译方式与解释方式的根本区别在于是否生成目标代码。
5、对编译程序而言,输入数据是源程序,输出结果是目标程序。
7、若源程序是用高级语言编写的,目标程序是机器语言程序或汇编程序,则其翻译程序称为编译程序。
8、一个典型的编译程序中,不仅包括词法分析、语法分析、中间代码生成、代码优化、目标代码生成等五个部分,还应包括表格处理和出错处理。
其中,词法分析器用于识别单词。
10、一个上下文无关文法所含四个组成部分是一组终结符号、一组非终结符号、一个开始符号、一组产生式。
12、产生式是用于定义语法成分的一种书写规则。
13、设G[S]是给定文法,则由文法G所定义的语言L(G)可描述为L(G)={x│S*x,x∈V T*} 。
14、设G是一个给定的文法,S是文法的开始符号,如果S*⇒x(其中x∈V*),则称x是文法的一个句型。
15、设G是一个给定的文法,S是文法的开始符号,如果S*⇒x (其中x∈V T*),则称x是文法的一个句子。
16、扫描器的任务是从源程序中识别出一个个单词符号。
17、语法分析最常用的两类方法是自上而下和自下而上分析法。
18、语法分析的任务是识别给定的终结符串是否为给定文法的句子。
19、递归下降法不允许任一非终结符是直接左递归的。
20、自顶向下的语法分析方法的关键是如何选择候选式的问题。
21、递归下降分析法是自顶向下分析方法。
22、自顶向下的语法分析方法的基本思想是:从文法的开始符号开始,根据给定的输入串并按照文法的产生式一步一步的向下进行直接推导,试图推导出文法的句子,使之与给定的输入串匹配。
23、自底向上的语法分析方法的基本思想是:从给定的终结符串开始,根据文法的规则一步一步的向上进行直接归约,试图归约到文法的开始符号。
编译原理试题集78677第一章引论一.填空题1. 对编译程序而言,输入数据是________________;输出数据是_____________。
2. 编译后端通常不依赖于源语言而仅仅依赖于___________________。
3. 如果不需改写编译程序中与机器无关的部分就可以把编译程序移植到另外一个目标机上,则称该编译程序是___________________。
4. 描述程序设计语言词法的有效工具是___________________________。
5. 编译过程的每一个阶段都能检测出错误,其中,绝大多数错误在_______________阶段检测出来的。
6. 编译过程的每一个阶段都能检测出错误,其中,绝大多数错误在_______阶段检测出来的。
7. 为了使编译后的Java程序从一个平台移到另外一个平台上执行,Java定义了一种称为Byt eCode的虚拟机代码。
只要实际使用的操作平台上实现了执行ByteCode的Java 解释器,这个操作平台就可以执行各种Java程序。
这就是所谓Java语言的________________。
8. 在一个程序设计环境中,______________起着中心作用。
连接程序、调试程序、程序分析等工具的工作直接依赖于它所产生的结果。
解答: 1. 2. 3. 4. 5. 6. 7. 8.二.判断题1. 在编译过程中,既可以将几个不同的阶段合为一遍,也可以把一个阶段的工作分为若干遍。
()2. 编译程序生成的目标程序都是可执行的程序。
()3. 编译前端主要由与源语言和目标机相关的那些部分组成。
()4. 优化的任务在于对前端编译所产生的中间代码进行加工和变换,以其能产生运行结果更为准确的目标代码。
()5. 支持程序设计人员进行程序计开发的工具,除了编译程序以外,还需要编辑程序、链接程序和调试程序等其他一些工具。
()6. 汇编器将高级语言程序翻译成汇编语言程序。
()7. 许多编译程序在识别出语法单位后并不真正构造语法树。
编译原理填空题1.计算机执行用高级语言编写的程序主要有两种途径:___解释__和__编译___。
2.扫描器是__词法分析器___,它接受输入的__源程序___,对源程序进行___词法分析__并识别出一个个单词符号,其输出结果是单词符号,供语法分析器使用。
3.自上而下分析法采用___移进__、归约、错误处理、___接受__等四种操作。
4.一个LR分析器包括两部分:一个总控程序和___一张分析表__。
5.后缀式abc-/所代表的表达式是___a/(b-c)__。
6.局部优化是在__基本块___范围内进行的一种优化。
7、语义分析的基本功能包括: 确定类型、类型检查、语义处理和某些静态语义检查。
2.编译过程可分为(词法分析),(语法分析),(语义分析与中间代码生成),(优化)和(目标代码生成)五个阶段。
3.如果一个文法存在某个句子对应两棵不同的语法树,则称这个文法是(二义性的)。
4.从功能上说,程序语言的语句大体可分为(执行性)语句和(说明性)语句两大类。
5.语法分析器的输入是(单词符号),其输出是(语法单位)。
6.扫描器的任务是从(源程序中)中识别出一个个(单词符号)。
7.符号表中的信息栏中登记了每个名字的有关的性质,如(类型、种属、所占单元大小、地址)等等。
8.一个过程相应的DISPLAY表的内容为(现行活动记录地址和所有外层最新活动记录的地址)10.常用的两种动态存贮分配办法是(栈式)动态分配和(堆式)动态分配。
11.一个名字的属性包括( 类型)和(作用域 )。
12.常用的参数传递方式有(传地址),(传值),(传名)13.根据优化所涉及的程序范围,可将优化分成为(局部优化),(循环优化),(全局优化)三个级别。
14.语法分析的方法大致可分为两类,一类是(自上而下)分析法,另一类是(自下而上)分析法。
15.预测分析程序是使用一张(分析表)和一个(符号栈)进行联合控制的。
17.一张转换图只包含有限个状态,其中有一个被认为是(初)态;而且实际上至少要有一个(终)态。
编译原理复习资料一、填空题.1.编译程序是一种程序,能够将某一种高级语言编写的源程序改造成另一种低级语言编写的目标程序,它们在逻辑上等价,完成相同的工作。
2.如果一个文法存在某个句子对应两棵不同的语法树,则称这个文法是_二义性的__。
3.词法分析程序的功能是从左到右扫描源程序字符串,根据语言的词法规则识别出各类单词符号,并以__单词符号或单词符号表示的源程序_的形式输出。
4.编译程序一般划分为词法分析、语法分析、语义分析、中间代码生成、和代码优化目标代码生成六个阶段;除此以外,还有两个重要的基本工作,它们是表格管理和出错处理。
5.目前,语法分析方法有两大类,分别为自上向下的分析方法和__自下而上_分析方法。
自上而下的分析方法是从___文法的开始符号__出发,根据文法规则正向推导出给定句子的方法。
6.属性文法是编译技术中用来说明程序设计语言的___语义__的工具。
7.若源程序是用高级语言编写的,___目标程序__是机器语言程序或汇编程序,则其翻译程序称为 ____编译程序___。
8.扫描器(程序)的任务是从_字符串__中识别出一个个_单词符号_。
9.一个LR分析器包括三部分:总控程序、_分析表_和分析栈。
10.自顶向下的语法分析方法的基本思想是:从文法的_开始符号_出发,根据给定的输入串并按照文法的产生式一步一步的向下进行__正向推导_,试图推导出文法的给力句子__,使之与给定的输入串匹配。
11.按Chomsky分类法,文法被分成___4(0~3型文法)__类。
12.局部优化是在__基本块___范围内进行的一种优化。
13.编译程序是一种_翻译_程序,它将某一种高级语言编写的源程序改造成另一种低级语言编写的目标程序,源程序和目标程序在逻辑上等价,完成相同的工作。
14.编译程序与解释程序的根本区别为__解释程序在执行中不产生目标程序_。
15.语法分析的任务是识别给定的终结符号串是否为给定文法的___句子__。
《编译原理》训练题第一章一.填空题1.一个编译程序是一个①,编译程序完成从②语言所写的源程序到③语言所写的目标程序的翻译工作。
2.编译程序的整个工作划分成阶段进行的,典型的划分方法,将编译过程分成六个阶段:①,②,③,④,⑤,⑥。
3.对编译程序而言,输入数据是①,输出结果是②。
4.编译方式与解释方式的根本区别在于。
二判断题()1.汇编程序是一个编译程序,它把汇编语言程序翻译成机器语言执行。
() 2.编译程序是一个语言翻译程序,它把汇编语言程序翻译成机器语言执行。
三.选择题1.汇编程序是将(1)翻译成(2);编译程序是将(3)翻译成(4)。
可选项有:a.汇编语言程序b.机器语言程序c.高级语言程序d.汇编语言程序或机器语言程序e.汇编语言程序或高级语言程序f.机器语言程序或高级语言程序2.用高级语言编写的程序经编译后产生的程序叫(1)。
用不同语言编写的程序产生(1)后,可用(2)连接在一起生成机器可执行的程序。
在机器中真正执行的是(3)。
可选项有:a.源程序b.目标程序c.函数d.过程e.机器指令代码f.模块g.连接程序h..程序库3.编译程序与具体的机器(1),与具体的语言(2)。
可选项有:a.有关b.无关4.编译程序是一种常用的软件。
可选项有:a.应用b.系统5.编译程序生成的目标程序是机器语言的程序。
可选项有:a.一定b.不一定四、思考题1.给出一个典型的编译程序的结构框图。
2.什么是前端和后端?设想相同的前端不同的后端,相同的后端不同的前端生成的编译程序分别有何特征?第二章一.填空题1. INT O A在每个过程目标程序的入口都有这样一条指令,用以完成①的工作,A域的值为②。
2. OPR O O在每个过程目标程序的①都有这样一条指令,用以完成②的工作。
3.PL/0编译程序运行时的存储分配策略采用栈式动态分配,用①链和②链的方式解决递归调用和非局部变量的引用问题。
4. 是构成语言文法的单词,是语法成分的最小单位。
《编译原理》练习题一一、填空题(每空1分)1.设G [S ]是一个文法,我们把能由文法的 (1) 推导出来的符号串α称为G 的一个句型。
当句型α仅由 (2) 组成时 (即α∈V T *),则将它称为G 产生的句子。
2.从某一给定的状态q 出发,仅经过若干条 (3) 的矢线所能达到的状态所组成的集合称为ε-CLOSURE(q)。
3.设G=(V N ,V T ,P,S)是一文法,我们说G 中的一个符号X ∈V N ∪V T 是有用的,是指X 至少出现在 (4) 的推导过程中,否则,就说X 是无用的。
我们将不含形如A→A 的产生式和不含无用符号及无用产生式的文法称为 (5) 。
4.我们常采用形如 (class, value)的二元式作为一个单词的 (6) 。
其中,class 是一个整数,用来指示该单词的 (7) ,value 则是单词之值。
5.一个文法G[S]可表示成形如 (8) 的四元式。
其中V N ,V T ,P 均为非空的有限集,分别称为非终结符号集、终结符号集和产生式集, S ∈V N 为文法的开始符号。
此外,将出现在各产生式左部和右部的一切符号所组成的集合称为 (9) ,记作V 。
显然,V=V N ∪V T ,V N ∩V T =∅。
6.通常,可通过两种途径来构造词法分析程序。
其一是根据对语言中各类单词的某种描述或定义,用 (10) 构造词法分析程序;另外一种途径是所谓词法分析程序的(11) 。
7.设G 为一文法,A→α是G 的一个产生式,如果α具有υAδ的形式,其中υ,δ不同时为ε,则称产生式A→α是 (12) 。
若存在推导δυαA A *⇒⇒,则称产生式A→α是 (13) 。
8.设M=(K,Σ,f,S 0,Z)为一DFA ,并设s 和t 是M 的两个不同状态,我们说状态s,t 为某一输入串w (14) ,是指从s,t 中之一出发,当扫视完w 之后到达M 的终态,但从其中的另一个状态出发,当扫视完同一个w 后而进入 (15) 。
编译原理习题及答案(整理后)第一章1、将编译程序分成若干个“遍”是为了b.使程序的结构更加清晰2、构造编译程序应掌握a.源程序b.目标语言c.编译方法3、变量应当c.既持有左值又持有右值4、编译程序绝大多数时间花在上。
d.管理表格5、不可能是目标代码。
d.中间代码6、使用可以定义一个程序的意义。
a.语义规则7、词法分析器的输入是b.源程序8、中间代码生成时所遵循的是-c.语义规则9、编译程序是对d.高级语言的翻译10、语法分析应遵循c.构词规则二、多项选择题1、编译程序各阶段的工作都涉及到b.表格管理c.出错处理2、编译程序工作时,通常有阶段。
a.词法分析三、填空题b.语法分析c.中间代码生成e.目标代码生成1、解释程序和编译程序的区别在于是否生成目标程序2、编译过程通常可分为5个阶段,分别是词法分析、语法分析中间代码生成、代码优化和目标代码生成。
3、编译程序工作过程中,第一段输入是源程序,最后阶段的输出为标代码生成程序。
4、编译程序是指将源程序程序翻译成目标语言程序的程序。
一、单项选择题1、文法G:S→某S某|y所识别的语言是a.某y某b.(某y某)某c.某ny某n(n≥0)d.某某y某某2、文法G描述的语言L(G)是指α,α∈VT某}a.L(G)={α|S+某α,α∈V某}b.L(G)={α|ST某α,α∈(V∪V某)}d.L(G)={α|S+α,α∈(V∪V某)}c.L(G)={α|STNTN3、有限状态自动机能识别a.上下文无关文法c.正规文法b.上下文有关文法d.短语文法4、设G为算符优先文法,G的任意终结符对a、b有以下关系成立a.若f(a)>g(b),则a>bc.a~b都不一定成立b.若f(a)5、如果文法G是无二义的,则它的任何句子αa.最左推导和最右推导对应的语法树必定相同b.最左推导和最右推导对应的语法树可能不同c.最左推导和最右推导必定相同d.可能存在两个不同的最左推导,但它们对应的语法树相同6、由文法的开始符经0步或多步推导产生的文法符号序列是a.短语b.句柄c.句型d.句子7、文法G:E→E+T|TT→T某P|PP→(E)|I则句型P+T+i的句柄和最左素短语为a.P+T和ib.P和P+Tc.i和P+T+id.P和T8、设文法为:S→SA|AA→a|b则对句子aba,下面是规范推导。
注:题目前带*号为很有疑问的。
其余的也不是很对,总之答案仅供参考1.扫描器的任务是从源程序中识别出一个个__单词符号____。
2.语法分析最常用的两类方法是自顶向下和___ 自底向上______分析法。
3.所谓语法制导翻译方法是____为每个产生式配上一个语义子程序,并在语法分析的同时执行这些程序 ___________。
4.源程序执行的途径有翻译和解释途径两类。
5.符号表的作用是语义检查的依据和辅助目标代码的生成。
6.词法分析的任务是从左至右逐个字符地对源程序进行扫描,产生一个个单词序列,用以语法分析。
7.素短语是指至少含有一终结符除自身外不含其它素短语的短语。
8.LL(1)分析法的文法须满足的条件是无回溯和无左递归。
9.DFA和NFA间的区别是后继状态是否唯一和匹配速度快慢。
10.二义性的解决办法是修改编译算法和修改文法。
11.常用的两种动态存贮分配办法是栈式动态分配和__堆式___动态分配。
12.从功能上说,程序语言的语句大体可分为执行性语句和__说明性____语句两大类。
13.一个上下文无关文法包含四个组成部分是一组终结符号、一组非终结符号、一个开始符号和一组产生式。
14.产生式是用于定义__ 语法成分___的一种书写规则。
15.动态存储分配实现的方式有栈式分配和堆式分配两种。
16.表达式a*(b+c)/d- (f+e)的逆波兰式表示是abc+*d/fe+- 。
28.常见的中间语言的形式有三元式、四元式、逆波兰式和树表示。
17.可用属性文法来说明源语言语义。
属性文法由一个上下文无关文法和一系列附加在文法上的语义规则构成。
18.词法分析器的另一个名称为扫描程序。
19.代码优化可以分局部优化、全局优化和循环优化三类。
20.文法G[S]:S→aSb∣ε描述的语言L(G[S])是L(G[S])={(a^nb^n|n>=0} 。
21.素短语是指至少含有一终结符和除自身外不包含其它素短语的短语。
编译原理练习四一、填空题1.编译过程中,常见的中间语言形式有四元式、三元式、逆波兰表示和树形表示。
2、表达式x+y≤z V a>0Λ(8+z)>3的逆波兰表示为 xy+z≤a0>8z+3>ΛV。
3、在编译程序中安排中间代码生成的目的是便于代码优化和便于目标程序的移植。
4、根据所涉及程序的范围,优化可分为局部优化、循环优化和全局优化三种。
5、编译程序进行数据流分析的目的是为了进行全局优化。
6.局部优化是局限与一个基本块范围内的一种优化。
7.基本块内可进行的优化有:删除公共子表达式、删除无用代码、合并已知常量等。
8.从词法分析器到中间代码生成与被编译的源代码有关,称之为编译器的前端,而目标代码生成主要与目标机有关,称之为编译器的后端。
9.编译器通常按需要把寄存器分为三组使用:可分配寄存器、保留寄存器和零用寄存器。
10.释放寄存器的总的原则是释放代价最小的寄存器。
二、选择题1.表达式-a+b*(-c+d)的逆波兰式是 d 。
a.ab+-cd+-*b.a-b+c-d+*c.a-bc+-d+*d.a-bc-d+*+2.在编译程序中安排中间代码生成的目的是 b d 。
a.便于进行存储空间的组织b.有利于目标代码的优化c.有利于编译程序的移植d.有利于目标代码的移植e.有利于提高目标代码的质量3.-a-(b*c/(c-d)+(-b)*a)的逆波兰表示是 c 。
a.abc*cd-b-a*+/--b.a-bc*cd-b-a*+/-c.a-bc*cd-/b-a*+-d.a-bc*/cd-b-a*+-4.赋值语句X:=-(a+b)/(c-d)-(a+b*c)的逆波兰表示是 c 。
a.Xab+cd-/-bc*a+-:=b. Xab+/cd-bc*a+--:=c. Xab+-cd-/abc*+-:=d. Xab+cd-/abc*+--:=5.对任何一个编译程序来说,产生中间代码是 b .a.不可缺少的b. 不一定必要的6.逆波兰表达式ab+cd+*所代表的中缀形式的表达式是 b 。
注:题目前带*号为很有疑问的。
其余的也不是很对,总之答案仅供参考1.扫描器的任务是从源程序中识别出一个个__单词符号____。
2.语法分析最常用的两类方法是自顶向下和___ 自底向上______分析法。
3.所谓语法制导翻译方法是____为每个产生式配上一个语义子程序,并在语法分析的同时执行这些程序 ___________。
4.源程序执行的途径有翻译和解释途径两类。
5.符号表的作用是语义检查的依据和辅助目标代码的生成。
6.词法分析的任务是从左至右逐个字符地对源程序进行扫描,产生一个个单词序列,用以语法分析。
7.素短语是指至少含有一终结符除自身外不含其它素短语的短语。
8.LL(1)分析法的文法须满足的条件是无回溯和无左递归。
9.DFA和NFA间的区别是后继状态是否唯一和匹配速度快慢。
10.二义性的解决办法是修改编译算法和修改文法。
11.常用的两种动态存贮分配办法是栈式动态分配和__堆式___动态分配。
12.从功能上说,程序语言的语句大体可分为执行性语句和__说明性____语句两大类。
13.一个上下文无关文法包含四个组成部分是一组终结符号、一组非终结符号、一个开始符号和一组产生式。
14.产生式是用于定义__ 语法成分___的一种书写规则。
15.动态存储分配实现的方式有栈式分配和堆式分配两种。
16.表达式a*(b+c)/d- (f+e)的逆波兰式表示是abc+*d/fe+- 。
28.常见的中间语言的形式有三元式、四元式、逆波兰式和树表示。
17.可用属性文法来说明源语言语义。
属性文法由一个上下文无关文法和一系列附加在文法上的语义规则构成。
18.词法分析器的另一个名称为扫描程序。
19.代码优化可以分局部优化、全局优化和循环优化三类。
20.文法G[S]:S→aSb∣ε描述的语言L(G[S])是L(G[S])={(a^nb^n|n>=0} 。
21.素短语是指至少含有一终结符和除自身外不包含其它素短语的短语。
22.无环路有向图(DAG)是指如果有向图中任一通路都不是环路,则称庐有向图为无环路有向图,简称DAG 。
23.所谓优化是指加快运行速度和减少存储空间。
24.翻译程序分为解释程序、编译程序和汇编程序三种。
25.单词的描述工具有有穷自动机、正规式和正规方法。
26.文法G[S]:S→aSa∣cc描述的语言L(G[S])是 L(G[S])={(a^ncc^n|n>=0} 。
27.算符优先方法每次是对最左短语进行归约,规范归约每次是对句柄进行归约。
*28.中间代码的产生是随编译中语法分析处理而进行的,所以叫做的中间代码生成。
*29.文法G[S]:S→aAb|aBb B→cBd∣ε描述的语言L(G[S])是。
30.说明语句的翻译的任务是把有关属性填入符号表和为变量分配空间。
31.算符文法是指它的任何产生式的右部都不含两个相继(并列)的非终结符,算符优先文法是指构造算符优先表时,不产生冲突的文法。
32.符号表的主要操作包括符号表的初始化、符号表的查找和符号表中分程序结构层次的管理。
33.字母表{a,b}上,每个a均有一个b紧跟其后的所有符号串的集合的正规式表示为(b)*(ab)*(b)* 。
34.下推自动机是一个七元组,通常表示为( Q, Σ, Γ, δ, q0, Z0, F ) 。
35.PDA的含义是指下推自动机。
*36.文法G[S]:S→aAb|aaBbb B→cBd∣cd 描述的语言L(G[S])是。
37.一个确定有穷自动机可以通过消除__ 无用状态和等价状态而转换成一个最小的与之等价的有穷自动机。
38.LR(K)方法可以分为LR(0)、SLR(1)、 LR(1)和LALR(1)四种。
39.高级语言的翻译方式有解释和编译,它们的主要区别在于是否产生目的代码。
40.字母表{a,b,c}上,以aa结尾的所有符号串的集合的正规式表示为(a|b|c)*aa 。
41.下推自动机是用来识别 2型语言,有穷自动机用来识别3型语言。
42.从功能上说,程序语言的语句大体可分为说明性语句和__ 执行性____语句两大类。
43.汇编程序是将汇编语言程序翻译成机器语言。
44.编译程序是将高级语言翻译成汇编语言程序。
45.句柄是指____ 一个句型的最左直接短语。
46.过程信息表中必须包括过程名、参数信息和过程入口地址___。
47.表达式A/(B-C)*(D/F+E*G)的逆波兰式表示是ABC-/DF/EG*+* 。
48.与机器有关的优化包括__ 多处理器优化、无用代码优化、寄存器优化和特殊指令优化。
49.左线性文法的每条规则形如A→a和_ A→Ba __。
50.OPG的含义是指:算符优先文法。
51.词法分析器用于区分单词,语法分析器则用于发现源程序中的语法错误。
52.全局优化是指____ 跨越多个基本块的全局范围内的优化。
53.一个程序设计语言应具备语法、语义和语用三个方面。
54.表达式-A/(B+C)/((D+F)*(E-G))的逆波兰式表示是A-BC+/DF+EG-*/ 。
55.Chomsky把文法分为四种形式,它们分别是0型文法、1型文法、2型文法和3型文法。
56.自底向上语法分析方法的基本思想是:由输入的符号串出发,利用文法的规则一步步进行向上规约__,试图归约到文法的开始符号。
57.LR(0)项目集的相容性是指无移进—规约项目并存_____和无两归约项目并存。
58.在某些特殊情况下利用提取公因子和消除左递归使一个非LL(1)文法转换为LL(1)文法。
59.局部优化是指基本块内的优化。
60.LL分析器由三个部份组成,它们总控程序、预测分析表__和分析栈。
61.语句x=A/(B-C)-(D+F*(E+G))的逆波兰式表示是xABC-/DFEG+*+-= 。
62.LR(0)的项目集的项目类型可分为归约项目、待约项目、接受项目和移进项目。
63.句子分析分为自底向上和自顶向下两种类型。
64.DAG的含义是指:无回路有向图。
65.优先函数有两种构造方法,它们是关系图法和构造优先函数法。
66.文法G[S]:S→ABC A→aA∣a B→bB∣εC→cC∣cc 描述的语言L(G[S])是L(G[S])={a^ib^jc^k|i>=1,j>=0,k>=2} 。
67.在有穷自动机中,两个状态等价的条件是蔓延性条件和一致性条件。
68.自顶向下分析方法一般有LL(1)方法和递归下降法两种分析方法。
69.属性文法是一个三元组(G,V,F),分别表示一个上下文无关文法、属性的集合和关于属性的属性断言或一组属性的计算规则。
70.3型文法要求每条规则形如A→a和 A→ aB 。
71.3型文法有两种特殊形式,它们是左线性文法和右线性文法。
72.文法G[S]:S→aAb|B B→cBd∣ccdd 描述的语言L(G[S])是。
73.多余规则是指某条规则的左部终结符不在其他任何规则中出现和一旦用到此规则推不出终结符号串出来。
74.3型语言可以被有穷自动机来识别,2型语言可以被下推自动机来识别。
75.字母表{a,b}上,以aa打头的所有符号串的集合的正规式表示为aa(a|b)* 。
76.素短语是指至少含有一终结符和不含其它素短语的短语。
77.优先分析方法可分为简单优先分析方法和算符优先分析方法。
78.文法的实用性限制是不能有有害规则和__ 多余规则______。
79.词法分析的任务是__逐个读入源程序字符并按照构词规则切分成一系列单词_________________。
80.LR分析器有三个部份组成,它们总控程序、预测分析表__和分析栈。
81.语句x=-a+(b-c)*d+f+e/g的逆波兰式表示是xa-bc-d*+f+eg/+= 。
82.语义子程序的功能是改变变量的值、查填符号表、产生中间代码和发现并报错。
83.一个确定有穷自动机可以通过消除无用状态和_ 多余状态__而转换成一个最小的与之等价的有穷自动机。
84.DFA所能识别的语言定义为:(正则文法的定义)。
85.根据与机器的相关性,优化可以分为与机器有关的优化和___ 与机器无关的优化____两类。
86.引入中间语言的目的是便于目标代码的生成和___ 便于移植______。
87.语法分析的任务是____ 识别由词法分析给出的单词符号序列是否是给定文法的正确句子_________________。
88.LR的含义是_ 自左向右规约___。
89.语句x=a*(b+c)/d+(f+e)*g的逆波兰式表示是xabc+*d/fe+g*+= 。
90.与机器无关的优化常见的有合并常量、消除公共子表达式、削减运算强度和外提循环式中的变量。
91.语义分析含有如下两方面的任务一是静态语义审查,二是动态语义解释执行。
92.文法G[S]:S→AB A→aA∣a B→bB∣ε描述的语言L(G[S])是 L(G[S])={a^i b^j|i>=1,j>=0} 。
93.词法分析的单词可以分为常量、运算符、特殊符号、关键字和界符。
94.局部优化是指在只有一个入口和一个出口的基本程序块上进行的优化。
95.符号表的表项排列结构可以分为线性表组织、有序表组织和散列表组织三种结构。
96.递归子程序分析法属于自顶向下语法分析方法,LR语法分析方法属于自底向上语法分析文法。
97.一个DFA要求初态唯一和后继状态唯一。
98.上下文无关文法的每一条规则形如 A→β。
99.下推自动机的英文简称为PDA 。
100.单词的描述工具有有穷自动机、正规则文法和正规式三类。
101G[S]:S→SS∣β描述的语言L(G[S])是L(G[S])={(β)^n|n>=2} 。
102系统的关键字和系统定义的运算符、分隔符都各自单独定义为一个词类,那么词类定义中除了常量和标识符以外,别的词类就一般不需附加信息。
103分析的文法须满足的条件是和无回溯。
104符号表表的内容包括两部份:标识符的名字和名字有关的信息。
105 编译中,各个阶段广泛采用的数据结构是表,它记录不同阶段时的不同信息,以便查询和修改。
其中使用期最长的是符号表。
106G优化的基本方法是:第一步___从四元式序列构造DAG _____,第二步再从DAG图重新写成四元式序列。
107制导翻译时修改文法的目的是便于生成四元和__ ______。
108式a+(b-c)*d+(f+e)/g的逆波兰式表示是abc-d*+fe+g/+ 。
109自动机一般分为NFA和_ DFA __。
112[S]是一个文法,它产生所有句子的全体是该文法所定义的语言。