编译原理填空
(完整word版)编译原理填空题
编译原理填空题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-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.将编译程序分成若干个“遍”是为了_使程序的结构更加清晰__。
2.正规式 MI 和 M2 等价是指__.M1 和 M2 所识别的语言集相等_。
3.中间代码生成时所依据的是 _语义规则_。
4.后缀式 ab+cd+/可用表达式__(a+b)/(c+d)_来表示。
6.一个编译程序中,不仅包含词法分析,_语法分析 ____,中间代码生成,代码优化,目标代码生成等五个部分。
7.词法分析器用于识别__单词___。
8.语法分析器则可以发现源程序中的___语法错误__。
9.下面关于解释程序的描述正确的是__解释程序的特点是处理程序时不产生目标代码 ___。
10.解释程序处理语言时 , 大多数采用的是__先将源程序转化为中间代码 , 再解释执行___方法。
11.编译过程中 , 语法分析器的任务就是__(2)(3)(4)___。
(1) 分析单词是怎样构成的 (2) 分析单词串是如何构成语句和说明的(3) 分析语句和说明是如何构成程序的 (4) 分析程序的结构12.编译程序是一种__解释程序__。
13.文法 G 所描述的语言是_由文法的开始符号推出的所有终极符串___的集合。
14.文法分为四种类型,即 0 型、1 型、2 型、3 型。
其中 3 型文法是___正则文法__。
15.一个上下文无关文法 G 包括四个组成部分,它们是:一组非终结符号,一组终结符号,一个开始符号,以及一组 _产生式__。
16.通常一个编译程序中,不仅包含词法分析,语法分析,中间代码生成,代码优化,目标代码生成等五个部分,还应包括_表格处理和出错处理__。
17.文法 G[N]= ( {b} , {N , B} , N , {N→b│ bB , B→bN} ),该文法所描述的语言是L(G[N])={b2i+1│ i ≥0}18.一个句型中的最左_简单短语___称为该句型的句柄。
19.设 G 是一个给定的文法,S 是文法的开始符号,如果 S->x( 其中 x∈V*), 则称 x 是文法 G 的一个__句型__。
编译原理选择填空
一.填空题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. 符号表中名字的有关信息在词法分析和语法语义分析过程中陆续填入。
编译原理考试题及答案
编译原理考试题及答案一、选择题(每题5分,共20分)1. 编译器的主要功能是什么?A. 代码优化B. 代码翻译C. 代码调试D. 代码运行答案:B2. 下列哪个选项不属于编译器的前端部分?A. 词法分析B. 语法分析C. 语义分析D. 代码生成答案:D3. 在编译原理中,文法的产生式通常表示为:A. A -> αB. A -> βC. A -> γD. A -> δ答案:A4. 下列哪个算法用于构建语法分析树?A. LL(1)分析B. LR(1)分析C. SLR(1)分析D. LALR(1)分析答案:A二、填空题(每空5分,共20分)1. 编译器的前端通常包括词法分析、语法分析和________。
答案:语义分析2. 编译器的后端主要负责________和目标代码生成。
答案:代码优化3. 编译器中的词法分析器通常使用________算法来识别单词。
答案:有限自动机4. 语法分析中,________分析是一种自顶向下的分析方法。
答案:递归下降三、简答题(每题10分,共30分)1. 简述编译器的作用。
答案:编译器的主要作用是将高级语言编写的源代码转换成计算机能够理解的低级语言或机器代码,以便执行。
2. 解释一下什么是语法制导翻译。
答案:语法制导翻译是一种翻译技术,它利用源语言的语法信息来指导翻译过程,使得翻译过程能够更好地理解源代码的语义。
3. 什么是词法分析器?答案:词法分析器是编译器前端的一部分,它的任务是将源代码文本分解成一系列的标记(tokens),这些标记是源代码的最小有意义的单位。
四、计算题(每题10分,共30分)1. 给定一个简单的文法G(E):E → E + T | TT → T * F | FF → (E) | id请计算文法的非终结符号E的FIRST集和FOLLOW集。
答案:E的FIRST集为{(, id},FOLLOW集为{), +, $}。
2. 假设编译器在进行语法分析时,遇到一个语法错误的代码片段,请简述编译器如何处理这种情况。
编译原理试题及答案3
编译原理复习题一、填空题: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 称为该句型的句柄。
编译原理_填空题
根据优化所涉及的程序范围,可将优化分成为(局部优化),(循环优化),(全局优化)三个级别。
计算机执行用高级语言编写的程序主要有两种途径:__(_解释)__和_(_编译)___。
局部优化是在__(基本块)___范围内进行的一种优化。
对于数据空间的存贮分配,FORTRAN采用(静态策略,PASCAL采用(动态)策略。
对于文法G,仅含终结符号的句型称为(句子)。
对于文法的每个产生式都配备了一组属性的计算规则,称为__(语义规则)___。
分析句型时,应用算符优先分析技术时,每步被直接归约的是_(_最左素短语)___,而应用LR分析技术时,每步被直接归约的是__(_句柄)__。
编译方式与解释方式的根本区别在于__是否生成(目标代码)。
编译过程可分为(词法分析),(语法分析),(语义分析与中间代码生成),(优化)和(目标代码生成)五个阶段。
编译器常用的语法分析方法有(自底向上)和(自顶向下)两种。
产生式是用于定义_(_语法范畴)___的一种书写规则。
常用的参数传递方式有(传地址),(传值),(传名)
自底向上的语法分析方法的基本思想是:从输入串入手,利用文法的产生式一步一步地向上进行___直接归约__,力求归约到文法的__开始符号___。
自顶向下的语法分析方法的基本思想是:从文法的__开始符号____开始,根据给定的输入串并按照文法的产生式一步一步的向下进行__直接推导____,试图推导出文法的__句子____,使之与给定的输入串___匹配___。
三、填空题(每空1分,共10分)
2型文法又称为(上下文无关)文法;3型文法又称为(正则)文法。
编译原理填空题整理
什么是编译原理?就是把高级语言(源语言)转换为低级语言(目标语言),且转换前后逻辑等价。
编译程序的过程分为5个阶段:词法分析,语法分析,语义分析,中间代码产生,优化、目标代码产生。
编译程序有7个模块:表格管理,出错处理,词法分析器,语法分析器,优化器,目标代码生成器,语义分析与中间代码产生器。
编译前端与后端:前端主要与源语言有关,与目标机无关(词法分析,语法分析,语义分析,中间代码产生),后端与目标机有关(代码优化,目标代码生成)。
编译程序的语言:以前是机器语言或汇编语言,后来是高级语言,再来是“移植”方法,“自编译”方式。
程序语言规则:词法规则(单词符号的形成规则),语法规则(如何从单词符号形成更大的结构即语法单位),语义分析(定义一个程序的意义)。
不包含任何符号的序列称为空字表示不含任何元素的空集上下无关文法:所定义的语法范畴(或语法单位)是完全独立于这种范畴可能出现的环境的。
一组上下无关文法包含的四个组成部分:一组终结符号(VT),一组非终结符号(VN),一个开始符号(S),一组产生式(T)假定G是一个文法,S是它的开始符号。
如果S=>a。
则称a是一个句型。
仅含终结符号的句型是一个句子,文法G所产生的句子的全体是一个语言,将它记为L(G)。
{30页例2.123} 词法分析器的功能是输入源程序,输出单词符号。
程序语言的单词符号一般有:关键字、标示符、常数、运算符、界符。
确定有限自动机是DFA,原因是他是一个单值函数,唯一的确定了下一状态。
不确定有限自动机是NFA。
左递归特点:会使自上而下的分析过程陷入无限循环。
回朔特点:1.麻烦2.产生虚假匹配3.难知出错的确切位置4.效率很低,代价极高。
LL(1)文法的条件:1.文法不含左递归。
2.对于文法中的每个非终结符A,若它存在某个候选首符集包含,则FIRST(A)交FOLLOW(A)为空。
3. 对于文法中的每个非终结符A的每个产生式的候选首符集两两不相交。
编译原理复习题
一、填空题:〔10分,第1小题每2个1分,其余每空1分〕1、编译程序一般含有八局部,分别是、、、、、、、。
2、编译程序与解释程序的根本区别是3、一个上下文无关文法G包括四个组成局部依次为:一组_____、一个_____、一组_____、一组______。
4、设G是一个文法,S是文法的开始符号,如果S⇒* X,那么称X 是。
二、选择题〔本大题共15小题,每题1分,共15分〕1、编译程序生成的目标程序是机器语言程序。
A、一定B、不一定2、设有文法G[S]=〔{b},{S,B},S,{S→b|bB, B→bS}〕,该文法描述的语言是。
A、b i | i≥0B、b2i | i≥0C、b2i+1 | i≥0D、b2i+1 | i≥13、设有文法G[S]:S→S*S|S+S|〔S〕|a该文法二义性文法A、是B、不是C、无法判断4、汇编程序是将______翻译成______;编译程序是将_______翻译成__________。
A、汇编语言程序B、机器语言程序C、高级语言程序D、汇编语言或机器语言程序5、给定文法A→bA|cc, 下面符号串中,为该文法句子的是。
①cc ②bcbc ③bcbcc ④bccbcc ⑤bbbccA、①B、①③④⑤C、①⑤D、①④⑤E、①②③④⑤6、语法分析的常用方法是。
①自顶向下②自底向上③自左向右④自右向左A、①②③④B、①②C、③④D、①②③7、语言L={a n bb n|n≥1},那么下述文法中,可以产生语言LA、Z→aZb|aAb|b A→aAb|bB、A→aAb A→bC、Z→AbB A→aA|a B→bB|bD、Z→aAb A→aAb|b8、以下正规表达式中________与(a|b)*(c|d)等价。
A、〔a*|b*〕(c|d)B、〔a*|b*〕*(c|d)C、(ab)*(d|c)D、〔a*b*〕(cd)9、算符优先分析法每次都是对进行归约。
A、最左短语B、直接短语C、句柄D、素短语E、最左素短语10、简单优先分析法每次都是对进行归约A、最左短语B、直接短语C、句柄D、素短语E、最左素短语11、以下文法G[S] ]:S→AA A→Aa|a不是LR〔1〕文法,理由是A.、FIRST(S)∩FIRST〔A〕≠∅B、FIRST〔A〕∩FOLLOW〔A〕≠∅C、FIRST〔Aa〕∩FIRST〔a〕≠∅D、都不是12、设有文法G[E]:E→E*E|E+E|〔E〕|a 该文法LR〔1〕文法A、是B、不是C、无法判断13、对于文法G[A]:A→aABe|Ba B→dB|ε有人说,因为FIRST〔aABe〕∩FOLLOW〔A〕≠∅并且FIRST〔Ba〕∩FOLLOW 〔A〕≠∅,所以文法G[A]不是LL〔1〕文法。
编译原理习题
编译原理复习资料一、填空题.1.编译程序是一种程序,能够将某一种高级语言编写的源程序改造成另一种低级语言编写的目标程序,它们在逻辑上_等价__,完成_相同__的工作。
2.如果一个文法存在某个句子对应两棵不同的语法树,则称这个文法是___二义性的____。
3.词法分析程序的功能是从左到右扫描源程序字符串,根据语言的词法规则识别出各类单词符号,并以___单词符号或单词符号表示的源程序_____的形式输出。
4.编译程序一般划分为词法分析、语法分析、语义分析、中间代码生成、和_代码优化_目标代码生成六个阶段;除此以外,还有两个重要的基本工作,它们是_表格管理_和_出错处理_。
5.目前,语法分析方法有两大类,分别为自上向下的分析方法和__自下而上__分析方法。
自上而下的分析方法是从____文法的开始符号_____出发,根据文法规则正向推导出给定句子的方法。
6.属性文法是编译技术中用来说明程序设计语言的__语义___的工具。
7.若源程序是用高级语言编写的,_____目标程序 ____是机器语言程序或汇编程序,则其翻译程序称为__编译程序____。
8.扫描器(程序)的任务是从____字符串____中识别出一个个___单词符号___。
9.一个LR分析器包括三部分:总控程序、_分析表___和分析栈。
10.自顶向下的语法分析方法的基本思想是:从文法的___开始符号_____出发,根据给定的输入串并按照文法的产生式一步一步的向下进行____正向推导___,试图推导出文法的__给力句子__,使之与给定的输入串匹配。
11.按Chomsky分类法,文法被分成__4(0~3型文法)_类。
12.局部优化是在__基本块__范围内进行的一种优化。
13.编译程序是一种_翻译_程序,它将某一种高级语言编写的源程序改造成另一种低级语言编写的目标程序,源程序和目标程序在逻辑上等价,完成相同的工作。
14.编译程序与解释程序的根本区别为___解释程序在执行中不产生目标程序___。
编译原理 填空题
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)的逆波兰式表示是。
28.常见的中间语言的形式有三元式、、逆波兰式和树表示。
17.可用属性文法来说明源语言语义。
属性文法由一个和一系列附加在文法上的语义规则构成。
18.词法分析器的另一个名称为。
19.代码优化可以分、全局优化和循环优化三类。
20.文法G[S]:S→aSb∣ε描述的语言L(G[S])是。
21.素短语是指至少含有一终结符和的短语。
22.无环路有向图(DAG)是指。
23.所谓优化是指和减少存储空间。
24.翻译程序分为解释程序、和汇编程序三种。
25.单词的描述工具有、正规式和正规方法。
26.文法G[S]:S→aSa∣cc描述的语言L(G[S])是。
27.算符优先方法每次是对进行归约,规范归约每次是对句柄进行归约。
28.中间代码的产生是随编译中语法分析处理而进行的,所以叫做的中间代码生成。
29.文法G[S]:S→aAb|aBb B→cBd∣ε描述的语言L(G[S])是。
编译原理试题及答案
编译原理试题一、填空题1、汇编程序将________翻译成________;编译程序将________翻译成________。
2、编译程序工作工程可以划分为______、______、______、______和______等5个基本阶段,同时还会伴有______和______。
3、对编译程序而言,输入数据是______,输出数据是______。
4、已知文法G[E]:E—>T|E+T|E—F,T-〉F|T*F|T/F,F->(E)|I,(“,”是间隔符号,不是文法中的符号)。
该文法的开始符号(识别字符)是______,终结符号集合V T是______,非终结符号结合V N是______,句型T+T*F+i的短语有____________。
该文法消除直接左递归,改写后的文法为E->________,T ->________,F-〉________。
5、Chomsky定以来寺中形式语言的文法分别为:________文法(又称________文法)、________文法(又称________文法)、________文法(又称________文法)、________文法(又称________文法)。
6、编译过程中扫描器所完成的任务是从________中识别出一个个具有________。
7、确定的有穷自动机是一个________,通常表示为________.8、LL(k)分析中,第一个L的含义是________,第二个L的含义是________,“k"的含义是________。
9、LL(1)分析中,第一个L的含义是________,第二个L的含义是________,“1”的含义是________.10、LR(0)分析中,“L"的含义是________,“R”的含义是________,“0”的含义是________。
11、SLR(1)分析中,“L”的含义是________,“R”的含义是________,“1”的含义是________。
《编译原理》练习题
《编译原理》练习题一一、填空题(每空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. 编译器的主要功能是什么?A. 代码优化B. 语法分析C. 代码生成D. 所有以上选项答案:D2. 下列哪个阶段属于编译过程的前端?A. 语法分析B. 代码生成C. 运行时库链接D. 目标代码优化答案:A3. 在编译原理中,什么是“产生式系统”?A. 一种编程语言的规范B. 一种用于描述语法的系统C. 一种代码优化技术D. 一种代码生成方法答案:B4. 以下哪个是自顶向下的语法分析方法?A. LR分析B. LALR分析C. LL分析D. CYK算法答案:C5. 在编译器的哪个阶段会进行类型检查?A. 词法分析B. 语法分析C. 语义分析D. 代码生成答案:C二、填空题1. 编译器在进行________时,会识别源代码中的各种标识符、常量、运算符等,并将其转换成相应的符号。
答案:词法分析2. 在编译原理中,________图是一种用于描述程序执行过程中变量状态的图,它以节点表示变量的值,以有向边表示程序的控制流。
答案:控制流3. 语法分析的主要任务是根据________规则来分析和构建源程序的语法结构。
答案:语法4. 在编译过程中,________是将源程序中的高级表示转换为机器语言或中间代码的过程。
答案:代码生成5. 编译器的________阶段负责将优化后的代码转换为目标机器可执行的指令序列。
答案:目标代码生成三、简答题1. 简述编译器的一般工作流程。
答:编译器的一般工作流程包括以下几个阶段:首先是词法分析,将源代码文本分解成一系列的记号;其次是语法分析,根据语言的语法规则构建抽象语法树;接着是语义分析,检查源代码的语义正确性并进行类型检查;然后是中间代码生成,将抽象语法树转换为中间表示形式;之后是代码优化,对中间代码进行各种优化以提高效率;最后是代码生成,将优化后的中间代码转换为目标机器的机器代码。
2. 描述自顶向下和自底向上语法分析方法的主要区别。
答:自顶向下的语法分析方法从开始符号开始,尝试将输入的记号序列归约为语法中的产生式规则,直到得到完整的抽象语法树。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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. 符号表中名字的有关信息在词法分析和语法语义分析过程中陆续填入。
4. 自顶向下语法分析方法的基本思想是:从识别符号出发,利用文法的规则不断建立直接推导,试图构造一个推导序列,最终由它推导出与输入符号串的符号串。
5. 堆式动态分配策略允许用户动态的申请和释放存储空间存储。
6. 语法树代表推导过程,分析树代表归约过程。
7.在优化中,可把循环中的不变运算提到循环外面去,这种方法称为代码外提。
1 最左推导是指每次都对句型中的最左非终结符进行扩展。
2. 确定有限自动机DFA是NFA 的一个特例。
(2分)。
3. 自顶向下语法分析方法的基本思想是:从识别符号出发,利用文法的规则不断建立直接推导,试图构造一个推导序列,最终由它推导出与输入符号串的符号串。
4. 确定的有穷自动机是一个五元组,通常表示为M(Q,∑,t,q0,F)。
5. 一个字集是正规的,当且仅当它可由DFA(NFA)所识别。
6.文法中的终结符和非终结符的交集是空集。
词法分析器交给语法分析器的文法符号一定是终结符,它一定只出现在产生式的右部。
7 目标程序运行的动态分配策略中,含有栈式和堆式分配策略。
1.自底向上语法分析方法的基本思想是:从待输入的符号串开始,利用文法的规则步步向上进行归约,试图归约到文法的识别符号。
2. 若源程序使用高级语言编写的,目标程序是机器语言程序,则其翻译程序称为编译程序(2分)。
2. 编译程序是指将源程序程序翻译成目标程序的程序。
3. 自顶向下语法分析方法的基本思想是:从识别符号出发,利用文法的规则不断建立直接推导推导,试图构造一个推导序列,最终由它推导出与输入符号串的符号串。
4. 编译过程通常可分为5个阶段,分别是词法分析、语法分析、语义分析、代码优化和目标代码生成。
5. 优化就是对程序进行各种等价变换,使之能生成更有效的目标代码。
1. 自下而上分析法采用移进、归约、错误处理、接受等四种操作。
2. 采用自上而下语法分析时,必须消除文法的左递归(2分)。
3. 已知文法G[E]:
E→T│E+T│E-T
T→F│T*F│T/F
F→(E)│i
该文法的开始符号是 E ,终结符号集合V T是+、-、*、/、(、)、i ,非终结符号集合V N是E、T、F。
4. 扫描器的任务是从左到右一个一个地对源程序进行扫描,产生一个一个的具有独立语法意义的单词。
5. 优化就是对程序进行各种等价变换,使之能生成更有效的目标代码。
6. A→α·称为归约项目;对文法开始符S′→α·为接受项目;若a为终结符,则称A→α·aβ为移进项目;若B为非终结符,则称A→α·aβ为待约项目。
1.编译程序的工作过程一般可以划分为_词法分析_、_语法分析_、_语义分析、_中间代码生成、_代码优化__等几个基本阶段,同时还会伴有表格处理和出错处理。
2.文法G产生的所有句子的全体是该文法描述的语言。
3.来自中间代码的代码生成涉及了两个标准技术:宏扩展和静态模拟。
_宏扩展_涉及到用一系列等效的目标代码指令代替每一种中间代码指令。
4.为文法的每一个规则配备的计算属性的计算规则,称为语义规则。
1. 假定G是一个文法,S是它的开始符号,如果S * α,则称α是一个句型,仅含终结符号的句型是一个句子。
文法G所产生的句子的全体是一个语言,将它记为L(G)。
2. 乔姆斯基定义的四种形式语言文法分别为:0型文法(又称短语结构文法)、1型文法(又称上下文有关文法)、2型文法(又称上下文无关文法)、3型文法(又称正则文法)。
3. 自顶向下语法分析方法的基本思想是:从识别符号出发,利用文法的规则不断建立直接推导推导,试图构造一个推导序列,最终由它推导出与输入符号串相同的符号串。
1. 如果在一个文法中存在某个句子,它有二个以上得最左(最右)推导,也就是说,若该句子对应两棵不同的语法树,则这个文法是二义性文法。
2. 编译方式与解释方式的根本区别在于是否生成目标代码。
(2分)
3. LL(1)分析法中,第一个L的含义是从左往右,第二个L含义是每次进行最左推导,“1”的含义是向输入串中查看一个输入符号。
4. 自顶向下语法分析方法会遇到的主要问题有左递归和回溯。
5. 符号表的数据结构可以是线性符号表、树结构、散列表。
6. 一个字集是正规的,当且仅当它可由DFA(NFA)所识别。
1.中间代码有逆波兰式、三元式样、四元式、树形表示等形式,生成中间代码主要是为了使代码优化及目标程序便于移植。
(6分)。
2. 文法G产生的句子的全体是该文法描述的语言(2分)。
3. 在一个基本块内,可实行3种优化方法,即合并已知量、删除无用赋值、
删除多余运算。
4. 确定的有穷自动机是一个五元组,通常表示为M(Q,∑,t,q0,F)。
5. 活前缀是指规范句型的一个前缀,这种前缀不含句柄之后的任何符号。
1.如果在一个文法中存在某个句子,它有二个以上的最左(最右)推导,也就是说,若该句子对应两棵不同的语法树,则这个文法是二义性文法。
2.假设G是一个文法,S是文法的开始符号,如果S * x,则称x是句型。
(2分)
3.LR(K)分析法中, L的含义是自左向右进行分析,R含义是采用最右推导的逆过程最左归约,“K”的含义是至多向前查看K个输入符号。
4.自顶向下语法分析方法会遇到的主要问题有左递归和回溯。
5.编译过程中,常见的中间语言形式有三元式、逆波兰式和四元式。
6.在编译程序中安排中间代码生成的目的是便于代码优化和便于目标程序的移植。
1. 如果在一个文法中存在某个句子,它有二个以上得最左(最右)推导,也就是说,若该句子对应两棵不同的语法树,则这个文法是二义性文法。
2. 对编译程序而言,输入数据是源程序,输出结果是目标程序。
3. LR(1)分析法中,L的含义是自左向右进行分析,R含义是采用最右推导的逆过程最左归约,“1”的含义是至多向前查看一个输入符号。
4. 语法分析是依据语言的语法规则进行的,中间代码产生是依据语言的语义规则进行的。
5. 编译过程中,常见的中间语言形式有三元式、逆波兰式和四元式。
6. 编译过程中扫描器所完成的任务是从源程序中识别出一个一个具有独立语法意义的单词。