2001年编译原理试题
编译原理期末试题(8套含答案+大题集)

《编译原理》期末试题(一)一、是非题(请在括号内,正确的划√,错误的划×)(每个2分,共20分)1.编译程序是对高级语言程序的解释执行。
(× )2.一个有限状态自动机中,有且仅有一个唯一的终态。
(×)3.一个算符优先文法可能不存在算符优先函数与之对应。
(√ )4.语法分析时必须先消除文法中的左递归。
(×)5.LR分析法在自左至右扫描输入串时就能发现错误,但不能准确地指出出错地点。
(√)6.逆波兰表示法表示表达式时无须使用括号。
(√ )7.静态数组的存储空间可以在编译时确定。
(×)8.进行代码优化时应着重考虑循环的代码优化,这对提高目标代码的效率将起更大作用。
(×) 9.两个正规集相等的必要条件是他们对应的正规式等价。
(× )10.一个语义子程序描述了一个文法所对应的翻译工作。
(×)二、选择题(请在前括号内选择最确切的一项作为答案划一个勾,多划按错论)(每个4分,共40分) 1.词法分析器的输出结果是_____。
A.( ) 单词的种别编码B.( ) 单词在符号表中的位置C.( ) 单词的种别编码和自身值D.( ) 单词自身值2.正规式M 1 和M 2 等价是指_____。
A.( ) M1和M2的状态数相等B.( ) M1和M2的有向边条数相等C.( ) M1和M2所识别的语言集相等D.( ) M1和M2状态数和有向边条数相等3.文法G:S→xSx|y所识别的语言是_____。
A.( ) xyx B.( ) (xyx)* C.( ) xnyxn(n≥0) D.( ) x*yx*4.如果文法G是无二义的,则它的任何句子α_____。
A.( )最左推导和最右推导对应的语法树必定相同B.( ) 最左推导和最右推导对应的语法树可能不同C.( ) 最左推导和最右推导必定相同D.( )可能存在两个不同的最左推导,但它们对应的语法树相同5.构造编译程序应掌握______。
《编译原理》考试试题及答案(汇总)

《编译原理》考试试题及答案(汇总)一、是非题(请在括号内,正确的划√,错误的划×)(每个2分,共20分)1.编译程序是对高级语言程序的解释执行。
(× )2.一个有限状态自动机中,有且仅有一个唯一的终态。
(×)3.一个算符优先文法可能不存在算符优先函数与之对应。
(√ )4.语法分析时必须先消除文法中的左递归。
(×)5.分析法在自左至右扫描输入串时就能发现错误,但不能准确地指出出错地点。
(√)6.逆波兰表示法表示表达式时无须使用括号。
(√ )7.静态数组的存储空间可以在编译时确定。
(×)8.进行代码优化时应着重考虑循环的代码优化,这对提高目标代码的效率将起更大作用。
(×)9.两个正规集相等的必要条件是他们对应的正规式等价。
(× )10.一个语义子程序描述了一个文法所对应的翻译工作。
(×)二、选择题(请在前括号内选择最确切的一项作为答案划一个勾,多划按错论)(每个4分,共40分)1.词法分析器的输出结果是。
A.( ) 单词的种别编码B.( ) 单词在符号表中的位置C.( ) 单词的种别编码和自身值D.( ) 单词自身值2.正规式 M 1 和 M 2 等价是指。
A.( ) M1和M2的状态数相等 B.( ) M1和M2的有向边条数相等C.( ) M1和M2所识别的语言集相等D.( ) M1和M2状态数和有向边条数相等3.文法G:S→所识别的语言是。
A.( ) B.( ) ()* C.( ) (n≥0) D.( ) x**4.如果文法G是无二义的,则它的任何句子α。
A.( )最左推导和最右推导对应的语法树必定相同B.( ) 最左推导和最右推导对应的语法树可能不同C.( ) 最左推导和最右推导必定相同D.( )可能存在两个不同的最左推导,但它们对应的语法树相同5.构造编译程序应掌握。
A.( )源程序B.( ) 目标语言C.( ) 编译方法 D.( ) 以上三项都是6.四元式之间的联系是通过实现的。
2001级编译原理试题(A)

2001级编译原理试题(A)2003.12一简答题(60分)1.编译程序按功能分为哪几个阶段?各个阶段的主要功能?六个阶段: 词法分析,语法分析,语义分析,中间代码生成,中间代码优化和目标代码生成。
各阶段的主要功能:词法分析: 检查词法错误并把源程序中的单词转换成一种内部形式(数据形式);语法分析: 检查源程序的语法错误,当发现错误时输出一些信息,并尽可能的继续检查;中间代码生成: 生成源程序的一种便于优化和便于产生目标代码的内部表示;中间代码优化: 进行不依赖于目标机的优化,以产生高质量目标代码;目标代码生成: 根据目标机特点从中间代码产生高质量目标代码。
2.实现高级语言程序的途径有哪几种?它们之间的区别?途径有两种: 解释器和编译器;解释器是源程序的一个执行系统,而编译器是源程序的一个转换系统;解释器直接由源程序得到运行结果,而编译器是生成等价于源程序的某种目标机程序。
3.给出描述非0数字作为开始符的奇数字符串的正则表达式或正则式。
S →Head Body Tail | TailHead → 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9Body →Body D | DD →0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | λTail → 1 | 3 | 5 | 7 | 94.判断字符串a n b n(n >0)是否可用确定自动机识别?如果能,则画出自动机,否则说明原因a nb n ( n>0 )不能用确定自动机识别,因为确定自动机只有有限个状态,而a,b的个数是不定的(也可以是无限的),而要识别的话需要每扫描一个a或b都要产生一个新的状态,所以无法识别。
5.对如下文法:G[S]:S → a b S | a a B | a dB → b b B | b分别给出句子abaabbb和ad的句柄句子ad的语法分析树为:句子abaabbb的语法分析树为:所以句子abaabbb的句柄是b;句子ad的句柄是ad .6.有如下文法,给出每个产生式的Predict集。
《编译原理》考试试题及答案

《编译原理》考试试题及答案(附录)一、判断题:1.一个上下文无关文法的开始符,可以是终结符或非终结符。
( X )2.一个句型的直接短语是唯一的。
( X )3.已经证明文法的二义性是可判定的。
( X )4.每个基本块可用一个DAG表示。
(√)5.每个过程的活动记录的体积在编译时可静态确定。
(√)6.2型文法一定是3型文法。
( x )7.一个句型一定句子。
( X )8.算符优先分析法每次都是对句柄进行归约。
(应是最左素短语) ( X )9.采用三元式实现三地址代码时,不利于对中间代码进行优化。
(√)10.编译过程中,语法分析器的任务是分析单词是怎样构成的。
( x )11.一个优先表一定存在相应的优先函数。
( x )12.目标代码生成时,应考虑如何充分利用计算机的寄存器的问题。
( )13.递归下降分析法是一种自下而上分析法。
( )14.并不是每个文法都能改写成LL(1)文法。
( )15.每个基本块只有一个入口和一个出口。
( )16.一个LL(1)文法一定是无二义的。
( )17.逆波兰法表示的表达试亦称前缀式。
( )18.目标代码生成时,应考虑如何充分利用计算机的寄存器的问题。
( )19.正规文法产生的语言都可以用上下文无关文法来描述。
( )20.一个优先表一定存在相应的优先函数。
( )21.3型文法一定是2型文法。
( )22.如果一个文法存在某个句子对应两棵不同的语法树,则文法是二义性的。
( )二、填空题:1.( 最右推导 )称为规范推导。
2.编译过程可分为(词法分析),(语法分析),(语义分析和中间代码生成),(代码优化)和(目标代码生成)五个阶段。
3.如果一个文法存在某个句子对应两棵不同的语法树,则称这个文法是()。
4.从功能上说,程序语言的语句大体可分为()语句和()语句两大类。
5.语法分析器的输入是(),其输出是()。
6.扫描器的任务是从()中识别出一个个()。
编译原理考试试题

编译原理考试试题( B 卷)备注:学生不得在试题纸上答题(含填空题、选择题等客观题一、填空题(每空1分,共20分)1.编译过程一般分为、、中间代码生成、和目标代码生成五个阶段。
2.语法分析最常用的两类方法是和分析法。
3.确定的有穷自动机是一个,通常表示为。
4.所谓最右推导是指。
5.语法分析器的任务是。
6.如果一个文法的任何产生式的右部都不含有的非终结符,则这种文法称为文法。
7.进行确定的自上而下语法分析要求语言的文法是无和的。
8.LR分析法是一种的语法分析方法。
9.根据优化对象所涉及的程序范围,代码优化分为、和等。
10.常用的优化技术包括:、、强度削弱、复写传播、等。
二、是非题(下列各题,你认为正确的,请在题后的括号内打“√”,错的打“×”。
每题2分,共20分)1.正规文法产生的语言都可以用上下文无关文法来描述。
…………………… ( ) 2.仅考虑一个基本块,不能确定一个赋值是否真是无用的。
………………………()3.如果一个文法是递归的,则其产生的语言的句子是无穷个。
…………………()4.四元式之间的联系是通过符号表实现的。
…………………………………………()5.文法的二义性和语言的二义性是两个不同的概念。
…………………………()6.一个LL( l)文法一定是无二义的。
……………………………………………… ( ) 7.在规范规约中用最左素短语来刻划可归约串。
……………………………… ( ) 8.目标代码生成时,应考虑如何充分利用计算机的寄存器的问题。
…………… ( ) 9.编译程序是对汇编程序的翻译。
……………………………………()10.逆波兰法表示的表达式亦称前缀式。
…………………………………………… ( )三、简答题(每题5分,共15分)1、简述栈式存储管理策略;2、何谓DAG;3、何谓文法的二义性;四、给出下述文法对应的正规式(7分)S→ 0A| 1BA→1S | 1B→0S | 0五、已知文法G(E):E→T | E+T | E-TT→F | T*F | T/FF→(E) | i证明E+T*F是该文法的一个句型,并指出该句型的所有短语、直接短语和句柄。
《编译原理》历年试题及答案

<编译原理>历年试题及答案一.(每项选择2分,共20分)选择题1.将编译程序分成若干个“遍”是为了___。
a.提高程序的执行效率b.使程序的结构更加清晰c.利用有限的机器内存并提高机器的执行效率d.利用有限的机器内存但降低了机器的执行效率2.构造编译程序应掌握____。
a.源程序b.目标语言c.编译方法d.以上三项都是3.变量应当_。
a.持有左值b.持有右值c.既持有左值又持有右值d.既不持有左值也不持有右值4.编译程序绝大多数时间花在____上。
a.出错处理b.词法分析c.目标代码生成d.管理表格5.词法分析器的输出结果是____。
a.单词的种别编码b.单词在符号表中的位置c.单词的种别编码和自身值d.单词自身值6.正规式MI和M2等价是指____。
a. MI和M2的状态数相等b.Ml和M2的有向弧条数相等。
C.M1和M2所识别的语言集相等 d. Ml和M2状态数和有向弧条数相等7.中间代码生成时所依据的是—。
a.语法规则 b.词法规则 c.语义规则 d.等价变换规则8.后缀式ab+cd+/可用表达式___来表示。
a.a+b/c+d b.(a+b)/(c+d) c.a+b/(c+d) d.a+b+c/d9.程序所需的数据空间在程序运行前就可确定,称为______管理技术。
a.动态存储b.栈式存储c.静态存储d.堆式存储10.堆式动态分配申请和释放存储空间遵守________原则。
a.先请先放b.先请后放c.后请先放d.任意二(每小题10分,共80分)简答题1.画出编译程序的总体结构图,简述各部分的主要功能。
2. 已知文法G[E]:E→ET+|T T→TF* | F F→F^ | a试证:FF^^*是文法的句型,指出该句型的短语、简单短语和句柄.3.为正规式(a|b) *a(a|b)构造一个确定的有限自动机。
4.设文法G(S):S→(L)|a S|aL→L,S|S(1) 消除左递归和回溯;(2) 计算每个非终结符的FIRST和FOLLOW;(3) 构造预测分析表。
mm编译原理vl
2010届推免研究生编译原理试题1.(10分)构造正则表达式(a|b)*aa的NFA,并将其转换为等价的DFA。
2.(12分)构造接受文法G:S→(L)|a L→L,S|S的活前缀的一个DFA,即其LR(0)状态机。
3.(6分)设有下列C语言的声明:typedefstruct {int a;float b;} CELL;CELL f1[100];写出本层的符号表和类型表。
4.(8分)设有如下一C程序片段:for(k=1;k<=10;k++){A=i+10*k;}写出该程序片段的四元式形式的中间代码。
5.(14分)形如A→ε的产生式为空产生式,试设计一个算法消除文法中的空产生式,并举例说明。
该算法可以采用自然语言,流程图或伪代码表示。
2011届推免研究生编译原理试题(总分50分)1.(12分)构造正则表达式(a|b)*a(a|b)(a|b)的NFA,并将其转换为等价的DFA。
2.(18分)证明文法E→E+T|TT→T*F|FF→id|(E)不是LL(1)文法,但是SLR(1)文法。
3.(10分)设有下列C语言的声明:typedefstruct {int year;int month;int day;} Birthday;typedefstruct {char name;Birthday date;} Student;Student s1;Birthday d1;设当前层数为L,当前偏移量为off1,试写出本层的符号表和类型表。
4.(10分)设有如下C语言声明:int A[10][5],B[10],C[10];把下列赋值语句翻译成四元式中间代码形式A[i][j]=B[i+j]+C[A[k][m]]。
1.(20分)(1)写出字母表∑= {a, b}上语言L = {w | w中a的个数是偶数}的正则表达式,并给出接受该语言的最小状态DFA。
状态0表示已接收了偶数个a,状态1表示已接收了奇数个a,0为终止状态。
编译原理考试及答案
编译原理考试及答案一、选择题(每题2分,共20分)1. 编译器的主要功能是将源代码翻译成目标代码,以下哪个选项不属于编译器的主要功能?A. 词法分析B. 语法分析C. 语义分析D. 代码优化答案:D2. 在编译原理中,BNF(巴科斯-诺尔范式)是一种用于描述哪种结构的记号?A. 语法结构B. 词法结构C. 语义结构D. 控制结构答案:A3. 编译过程中的哪个阶段负责检查变量是否被正确声明?A. 词法分析B. 语法分析C. 语义分析D. 代码生成答案:C4. 下列哪个选项不是编译器前端处理的一部分?A. 预处理B. 词法分析C. 语法分析D. 目标代码生成答案:D5. 在编译原理中,自底向上的解析方法通常指的是哪种分析方法?A. LL(1)分析B. LR(1)分析C. LALR(1)分析D. SLR(1)分析答案:B6. 编译器中的语义分析阶段主要负责什么?A. 识别标识符B. 检查语法结构C. 构建抽象语法树D. 生成中间代码答案:C7. 编译器中的错误恢复机制主要在哪个阶段进行?A. 词法分析B. 语法分析C. 语义分析D. 代码优化答案:B8. 编译器中的代码优化通常发生在哪个阶段?A. 语义分析B. 中间代码生成C. 目标代码生成D. 机器无关代码优化答案:D9. 在编译原理中,哪些技术用于处理左递归?A. 直接左递归消除B. 间接左递归消除C. 直接和间接左递归消除D. 只有直接左递归消除答案:C10. 编译器中的哪些技术用于处理冲突?A. 预测分析表B. 状态转换图C. 优先级规则D. 所有选项答案:D二、填空题(每题2分,共20分)1. 编译器的前端主要负责源程序的______和______。
答案:词法分析;语法分析2. 编译器的后端主要负责______和______。
答案:代码优化;目标代码生成3. 在编译原理中,一个文法的产生式规则形式为:A → α,其中A是非终结符,α是终结符和非终结符的有限序列,这种产生式规则被称为______产生式。
编译原理练习题及答案
第一章练习题(绪论)一、选择题1.编译程序是一种常用的软件。
A) 应用B) 系统C) 实时系统D) 分布式系统2.编译程序生成的目标代码程序是可执行程序。
A) 一定B) 不一定3.编译程序的大多数时间是花在上。
A) 词法分析B) 语法分析C) 出错处理D) 表格管理4.将编译程序分成若干“遍”将。
A)提高编译程序的执行效率;B)使编译程序的结构更加清晰,提高目标程序质量;C)充分利用内存空间,提高机器的执行效率。
5.编译程序各个阶段都涉及到的工作有。
A) 词法分析B) 语法分析C) 语义分析D) 表格管理6.词法分析的主要功能是。
A) 识别字符串B) 识别语句C) 识别单词D) 识别标识符7.若某程序设计语言允许标识符先使用后说明,则其编译程序就必须。
A) 多遍扫描B) 一遍扫描8.编译方式与解释方式的根本区别在于。
A) 执行速度的快慢B) 是否生成目标代码C) 是否语义分析9.多遍编译与一遍编译的主要区别在于。
A)多遍编译是编译的五大部分重复多遍执行,而一遍编译是五大部分只执行一遍;B)一遍编译是对源程序分析一遍就立即执行,而多遍编译是对源程序重复多遍分析再执行;C)多遍编译要生成目标代码才执行,而一遍编译不生成目标代码直接分析执行;D)多遍编译是五大部分依次独立完成,一遍编译是五大部分交叉调用执行完成。
10.编译程序分成“前端”和“后端”的好处是A)便于移植B)便于功能的扩充C)便于减少工作量D)以上均正确第二章练习题(文法与语言)一、选择题1.文法 G 产生的 (1) 的全体是该文法描述的语言。
A.句型B. 终结符集C. 非终结符集D. 句子2.若文法 G 定义的语言是无限集,则文法必然是 (2) A递归的 B 上下文无关的 C 二义性的 D 无二义性的3. Chomsky 定义的四种形式语言文法中, 0 型文法又称为(A)文法;1 型文法又称为(C)文法;2 型语言可由(G) 识别。
A 短语结构文法B 上下文无关文法C 上下文有关文法D 正规文法E 图灵机F 有限自动机G 下推自动机4.一个文法所描述的语言是(A);描述一个语言的文法是(B)。
编译原理复习题及答案
编译原理复习题及答案一、选择题1.一个正规语言只能对应(b)a一个非正规文法b一个最小有限状态自动机2.文法g[a]:a→εa→abb→abb→a就是(a)a正规文法b二型文法3.下面说法正确的是(a)a一个slr(1)文法一定也就是lalr(1)文法b一个lr(1)文法一定也就是lalr (1)文法4.一个上下文无关文法消除了左递归,提取了左公共因子后是满足ll(1)文法的(a 必要条件b充份必要条件5.下面说法正确的是(b)a一个非正规式就可以对应一个确认的非常有限状态自动机b一个非正规语言可能将对应多个非正规文法6.波函数优先分析与规范求值较之的优点就是(a)a归约速度快b对文法管制太少7.一个lr(1)文法合并同心集后若不是lalr(1)文法(b)a则可能将存有移进/求值冲突b则可能将存有求值/求值冲突c则可能存在移进/归约冲突和归约/归约冲突8.下面说法正确的是(a)alex就是一个词法分析器的生成器byacc就是一个语法分析器9.下面说法正确的是(a)a一个非正规文法也一定就是二型文法b一个二型文法也一定能有一个等价的正规文法10.编译原理是对(c)。
a、机器语言的继续执行b、汇编语言的译者c、高级语言的翻译d、高级语言程序的表述继续执行a)11.(a)是一种典型的解释型语言。
a.basicb.cc.fortrand.pascal12.把汇编语言程序翻译成机器可以继续执行的目标程序的工作就是由(b)顺利完成的。
a.编译器b.汇编器c.解释器d.进度表处理器13.用高级语言编写的程序经编译后产生的程序叫(b)a.源程序b.目标程序c.相连接程序d.解释程序14.(c)不是编译程序的组成部分。
a.词法分析程序b.代码生成程序c.设备管理程序d.语法分析程序15.通常一个编译程序中,不仅包含词法分析,语法分析,语义分析,中间代码生成,代码优化,目标代码生成等六个部分,还应当包含(c)。
a.演示执行器b.解释器c.表格处置和失效处置d.符号执行器16.编译程序绝大多数时间花在(d)上。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2001年编译原理试题
1.(10分)处于/* 和 */之间的串构成注解,注解中间没有*/。
画出接受这种注解的DFA的状态转换图。
2.(10分)为语言
L ={a m b n | 0 ≤ m ≤ 2n}(即a的个数不超过b的个数的两倍)
写一个LR(1)文法,不准超过6个产生式。
(若超过6个产生式,不给分。
若所写文法不是LR(1)文法,最多给5分。
)
3.(10分)构造下面文法的LL(1)分析表。
D → TL
T → int | real
L → id R
R → , id R | ε
4.(15分)就下面文法
S → ( L) | a L → L , S | S
∙给出一个语法制导定义,它输出配对括号的个数。
∙给出一个翻译方案,它输出每个a的嵌套深度。
如句子(a, (a, a) ),第一小题的输出是2,第二小题的输出是1 2 2。
5.(10分)Pascal语言for语句的含义见教材第222页习题7.13。
请为该语句设计一种合理的中间代码结构。
你可以按第215页图7.17的方式或者第219页图7.19的方式写出你的设计,不需要写产生中间代码的语法制导定义。
6.(5分)一个C语言程序如下:
func(i1,i2,i3)
long i1,i2,i3;
{
long j1,j2,j3;
printf("Addresses of i1,i2,i3 = %o,%o,%o\n",&i1,&i2,&i3);
printf("Addresses of j1,j2,j3 = %o,%o,%o\n",&j1,&j2,&j3);
}
main()
{
long i1,i2,i3;
func(i1,i2,i3);
}
该程序在某种机器的Linux上的运行结果如下:
Addresses of i1,i2,i3 = 27777775460,27777775464,27777775470 Addresses of j1,j2,j3 = 27777775444,27777775440,27777775434
从上面的结果可以看出,func 函数的3个形式参数的地址依次升高,而3个局部变量的地址依次降低。
试说明为什么会有这个区别。
7.(15分)一个C语言程序及其在某种机器linux操作系统上的编译结果如下。
根据所生成的汇编程序来解释程序中四个变量的作用域、生存期和置初值方式等方面的区别。
static long aa = 10;
short bb = 20;
func()
{
static long cc = 30;
short dd = 40;
}
.file "static.c"
.version "01.01"
gcc2_compiled.:
.data
.align 4
.type aa,@object
.size aa,4
aa:
.long 10
.globl bb
.align 2
.type bb,@object
.size bb,2
bb:
.value 20
.align 4
.type cc.2,@object
.size cc.2,4
cc.2:
.long 30
.text
.align 4
.globl func
.type func,@function
func:
pushl %ebp
movl %esp,%ebp
subl $4,%esp
movw $40,-2(%ebp)
.L1:
leave
ret
.Lfe1:
.size func,.Lfe1-func
.ident "GCC: (GNU) egcs-2.91.66 19990314/Linux (egcs-1.1.2 release)"
8.(10分)C语言是一种类型语言,但它不是强类型语言,因为编译时的类型检查不能保证所接受的程序没有运行时的类型错误。
例如,编译时的类型检查一般不能保证运行时没有数组越界。
请你再举一个这样的例子说明C语言不是强类型语言。
9.(10分)如果在A机器上我们有C语言编译器CC A,也有它的源码S A(用C 语言写成)。
如何利用它通过尽量少的工作来得到B机器的C语言编译器CC B。
10.(5分)表达式(λx.(λyz.(x + y) + z) 3) 4 5和(λx.(λyz.(x + y) + z) 3 5) 4有同样的结果。
在抽象机FAM上,哪一个表达式对应的目标代码的执行效率高?为什么?。