《编译原理》考试题
编译原理考试练习题
2019年春季《编译原理》在线作业一、单选题(共 30 道试题,共 60 分。
)V 1. 如果一个编译程序能产生不同于其宿主机的机器代码,则称它为:()A. 诊断编译程序B. 优化编译程序C. 交叉编译程序D. 可变目标编译程序正确答案:C 满分:2 分2. 对应于产生式A→XY继承属性Y.y的属性计算,可能正确的语义规则是()A. A.a:=f(X.x,Y.y)B. Y.y:=f(A.a,Y.y)C. Y.y:=f(X.x)D. A.a:=f(Y.y)正确答案:C 满分:2 分3. 表达式作为实在参数可以传递给被调用的过程,替换过程体中的()A. 局部变量B. 形式参数C. 全局变量D. 实在参数正确答案:B 满分:2 分4. 为了便于优化处理,三地址代码可以表示成()A. 三元式B. 四元式C. 后缀式D. 间接三元式正确答案:D 满分:2 分5. 程序语言的单词符号一般可以分为5种,下面()不需要超前搜索A. 关键字B. 标识符C. 常数D. 算符和界符正确答案:D 满分:2 分6. 在编译过程中,符号表的主要作用是()A. 帮助错误处理B. 辅助语法错误的检查C. 辅助语义的正确性检查D. 辅助代码生成E. 辅助对目标程序的优化正确答案:B 满分:2 分7. LR语法分析栈中存放的状态是识别()的DFA状态A. 前缀B. 可归前缀C. 项目D. 句柄正确答案:B 满分:2 分8. Fortran语言的编译程序采用()分配策略A. 静态B. 最佳C. 堆式动态D. 栈式动态正确答案:A 满分:2 分9. 使用三元式是为了:()A. 便于代码优化处理B. 避免把临时变量填入符号表C. 节省存储代码的空间D. 提高访问代码的速度正确答案:B 满分:2 分10. 合并表达式中常量运算的目的是()A. 使表达式中的常量尽可能少B. 是表达式尽可能简短C. 将可在编译时刻计算的常量运算在编译时刻计算出来,然后用所计算出来的值替换表达式中出现的所有这种常量运算,使得生成的代码指令尽可能少D. 以上都是正确答案:D 满分:2 分11. 从左线性文法构造有限自动机时,通常自动机状态个数比文法非终结符号数多()A. 4B. 2C. 0D. 1正确答案:D 满分:2 分12. 程序基本块是指()A. 一个子程序B. 一个仅有一个入口和一个出口的语句C. 一个没有嵌套的程序段D. 一组顺序执行的程序段,仅有一个入口和一个出口正确答案:D 满分:2 分13. 设G是一个文法,S是开始符号。
(完整版)编译原理复习题及答案
编译原理复习题及答案一、选择题1.一个正规语言只能对应(B)A 一个正规文法B 一个最小有限状态自动机2.文法G[A]:A→εA→aB B→Ab B→a是(A)A 正规文法B 二型文法3.下面说法正确的是(A)A 一个SLR(1)文法一定也是LALR(1)文法B 一个LR(1)文法一定也是LALR(1)文法4.一个上下文无关文法消除了左递归,提取了左公共因子后是满足LL(1)文法的(A)A 必要条件B 充分必要条件5.下面说法正确的是(B)A 一个正规式只能对应一个确定的有限状态自动机B 一个正规语言可能对应多个正规文法6.算符优先分析与规范归约相比的优点是(A)A 归约速度快B 对文法限制少7.一个LR(1)文法合并同心集后若不是LALR(1)文法(B)A 则可能存在移进/归约冲突B 则可能存在归约/归约冲突C 则可能存在移进/归约冲突和归约/归约冲突8.下面说法正确的是(A)A Lex是一个词法分析器的生成器B Yacc是一个语法分析器9.下面说法正确的是(A)A 一个正规文法也一定是二型文法B 一个二型文法也一定能有一个等价的正规文法10.编译原理是对(C)。
A、机器语言的执行B、汇编语言的翻译C、高级语言的翻译D、高级语言程序的解释执行11.(A)是一种典型的解释型语言。
A.BASIC B.C C.FORTRAN D.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)上。
大学课程《编译原理》考试试卷A卷及答案
《编译原理》考试试卷A适用专业:考试日期:闭卷所需时间:120分钟总分:100分一、填空题:(每空1分,共10分)1.解释系统与编译系统的区别在于和。
2.在编译过程中始终伴随着管理和出错处理过程。
3.语法分析的方法为和两大类。
4.LL(1)文法中不能有和。
5.词法分析器中单词的描述工具是 ,单词的识别工具。
6.算符优先语法分析,在符号栈栈顶出现时,进行规约处理。
二、单选题(每小题2分,共10分)1.词法分析器的加工对象是()A.中间代码B.单词C.源程序D.元程序2.同正则表达式a*b*等价的文法是()A. G1:S→aS|bS|εB. G2: S→aSb|εC. G3:S→aS|Sb|εD. G4: S→abS|ε3.文法G[A]:A→bH H→BA B→Ab H→a 不是()A. 2型文法B. 3型文法C. 0型文法D.1型文法4.算符优先分析每次都是对()进行规约。
A.短语B.最左素短语C.素短语D.句柄5.( )不是DFA的成分。
A.有穷字母表B. 初始状态集合C.终止状态集合D.有限状态集合三、问答题(第1,5小题每题15分,其余每小题10分,共80分)1. (15分)解释下列术语:(1)编译程序(2)句柄(3)上下文无关文法2.编译程序主要有哪些构成成分?(10分)3.给出描述语言L={a n b2n c m|n,m≥0}的cfg。
(10分)4.(10分)将下图中的DFA M最小化。
5. (15分)判断文法G[S]:S→aHH→aMd|dM→Ab|εA→aM|e是否为LL(1)文法?给出判断过程。
6. (10分)改写文法G[E]:E → E+T|TT →T*F|FF →(E)| a为无左递归文法。
7. (10分)已知文法G[S]为:S→VV→T|ViTT→F|T+FF→)V*|(请指出句型(+(i( 规范推到,并指出句型F+Fi( 中的短语、句柄和素短语。
《编译原理》考试试卷A参考答案适用专业:考试日期:闭卷所需时间:120分钟总分:100分一、填空题:(每空1分,共10分)1. 边翻译边执行和不生成目标代码。
编译原理考试试卷
编译原理考试试卷一、选择题(每题2分,共20分)1. 编译器的主要功能是将源代码转换成目标代码,以下哪个不是编译器的基本组成部分?A. 词法分析器B. 语法分析器C. 代码优化器D. 运行时环境2. 词法分析器通常不负责以下哪项任务?A. 识别关键字B. 识别标识符C. 进行语义分析D. 去除空白字符3. 语法分析中,递归下降分析是一种:A. 确定性分析方法B. 非确定性分析方法C. 基于语法制导的分析方法D. 基于语法树的分析方法4. LR分析器是用于处理:A. 上下文无关文法B. 上下文有关文法C. 正则文法D. 链式文法5. 语义分析的目的是:A. 检查源代码的语法是否正确B. 检查源代码的语义是否正确C. 将源代码转换为目标代码D. 优化源代码6. 代码生成阶段,编译器将抽象语法树转换成:A. 目标代码B. 源代码C. 汇编代码D. 机器代码7. 编译优化中,常量折叠是一种:A. 局部优化B. 全局优化C. 过程间优化D. 模块内优化8. 编译器的前端主要负责:A. 源代码的输入B. 目标代码的生成C. 源代码的解析和翻译D. 运行时错误检测9. 编译器的后端主要负责:A. 词法分析B. 语法分析C. 代码优化D. 目标代码的生成和链接10. 以下哪个是编译原理中常用的数据结构?A. 栈B. 队列C. 链表D. 所有选项都是二、简答题(每题10分,共30分)1. 简述编译原理中词法分析器的作用及其实现方式。
2. 描述语法分析中自顶向下分析和自底向上分析的区别。
3. 解释编译优化的重要性,并给出一个优化的例子。
三、计算题(每题25分,共50分)1. 给定一个简单的算术表达式 "3 + 4 * 2 - 1",请说明如何使用递归下降分析器来解析这个表达式,并给出相应的语法树。
2. 假设你有一个简单的编译器后端,需要将四元式 "(a, b, +, c)" 转换成目标代码。
编译原理试题汇总 编译原理期末试题(8套含答案 大题集)
编译原理考试题及答案汇总一、选择1.将编译程序分成若干个“遍”是为了_B__。
A . 提高程序的执行效率B.使程序的结构更加清晰C. 利用有限的机器内存并提高机器的执行效率D.利用有限的机器内存但降低了机器的执行效率2.正规式 MI 和 M2 等价是指__C__。
A . MI 和 M2 的状态数相等 B.Ml 和 M2 的有向弧条数相等。
C .M1 和 M2 所识别的语言集相等 D. Ml 和 M2 状态数和有向弧条数相等3.中间代码生成时所依据的是 _C_。
A.语法规则 B.词法规则 C.语义规则 D.等价变换规则4.后缀式 ab+cd+/可用表达式__B_来表示。
A. a+b/c+d B.(a+b)/(c+d) C. a+b/(c+d) D. a+b+c/d6.一个编译程序中,不仅包含词法分析,_A____,中间代码生成,代码优化,目标代码生成等五个部分。
A.( ) 语法分析 B.( )文法分析 C.( )语言分析 D.( )解释分析7.词法分析器用于识别__C___。
A.( ) 字符串 B.( )语句 C.( )单词 D.( )标识符8.语法分析器则可以发现源程序中的___D__。
A.( ) 语义错误 B.( ) 语法和语义错误C.( ) 错误并校正 D.( ) 语法错误9.下面关于解释程序的描述正确的是__B___。
(1) 解释程序的特点是处理程序时不产生目标代码(2) 解释程序适用于 COBOL 和 FORTRAN 语言(3) 解释程序是为打开编译程序技术的僵局而开发的A.( ) (1)(2) B.( ) (1) C.( ) (1)(2)(3) D.( ) (2)(3)10.解释程序处理语言时 , 大多数采用的是__B___方法。
A.( ) 源程序命令被逐个直接解释执行B.( ) 先将源程序转化为中间代码 , 再解释执行C.( ) 先将源程序解释转化为目标程序 , 再执行D.( ) 以上方法都可以11.编译过程中 , 语法分析器的任务就是__B___。
编译原理考试题库
一、判断(共计50分,每题2.5分)1、静态存储分配策略是在程序运行期间为源程序中的量进行分配。
A. 正确B. 错误错误:【B】2、含有优化部分的编译程序的执行效率高。
A. 正确B. 错误错误:【A】3、四元式之间的联系是通过符号表实现的。
A. 正确B. 错误错误:【B】4、包含公共左因子的文法也能直接用预测分析法来分析。
A. 正确B. 错误错误:【B】5、局部优化是在一个程序块内进行的优化。
A. 正确B. 错误错误:【B】6、数组元素的地址计算与数组的存储方式有关。
A. 正确B. 错误错误:【A】7、紧跟在条件转移语句后面的语句是基本块的入口语句。
A. 正确B. 错误错误:【A】8、LL(1)文法是无左递归、无二义性文法。
A. 正确B. 错误错误:【A】9、设有一个LR(0)项目集I={X→α.Bβ, A→α.},该项目集含有“归约-归约”冲突。
A. 正确B. 错误错误:【B】10、使用语法制导翻译法的编译程序能够同时进行语法分析和语义分析。
A. 正确B. 错误错误:【A】11、包含左递归的文法也能直接用LL(1)分析法来分析。
A. 正确B. 错误错误:【B】12、产生式是用于定义词法成分的一种书写规则。
A. 正确B. 错误错误:【B】13、如果i •>j , 则j <•i 。
A. 正确B. 错误错误:【B】14、编译程序与解释程序的区别在于编译程序对源程序进行了翻译,而解释程序则没有。
A. 正确B. 错误错误:【B】15、在形式语言中,最右推导的逆过程也称为规范归约。
A. 正确B. 错误错误:【A】16、设有一个LR(0)项目集Ii={X→α.Bβ,A→α.},该项目集含有“移进-归约冲突”。
A. 正确B. 错误错误:【A】17、动态存储分配是指在编译阶段对源程序中的量进行分配,以使目标代码在运行时加快行速度。
A. 正确B. 错误错误:【B】18、设有一个LR(0)项目集Ii={X→α.,A→α.},该项目集含有“归约-归约冲突”。
编译原理考试题
编译原理考试题
1. 编译器的作用是什么?简述编译器的基本工作流程。
2. 解释什么是词法分析。
描述词法分析器的基本工作原理。
3. 什么是语法分析?描述语法分析器的基本工作原理。
4. 解释语义分析的概念。
语义分析器的基本工作原理是什么?
5. 请简要解释编译器的前端和后端分别是做什么的。
6. 什么是中间代码?为什么编译器要生成中间代码?
7. 解释什么是符号表。
符号表在编译过程中起到什么作用?
8. 简述优化在编译过程中的作用。
列举并解释两种常见的优化技术。
9. 解释静态链接和动态链接的区别。
10. 请解释解释器和编译器之间的区别。
描述它们各自的工作
原理。
11. 解释冲突解析算法中的"移进-归约"冲突和"归约-归约"冲突。
12. 简述LL(1)文法和LR(1)文法的特点及区别。
13. 解释编程语言中的数据类型检查和类型推导的概念。
14. 简要描述语法制导翻译的概念和基本原理。
15. 请解释正则表达式和有限自动机之间的关系。
注意:以上为编译原理考试相关的问题,文中不含有标题相同的文字。
编译原理期末试题(含答案+大题集+重要知识点)
《编译原理》期末试题(一)一、是非题(请在括号内,正确的划√,错误的划×)(每个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.构造编译程序应掌握______。
编译原理考试习题及答案
( T ② S ① a
T ,
T ④ S ③ a
2019/1/29
CH.5.练习题3(P133.)
3.(1) 计算练习2文法G2的FIRSTVT和LASTVT。 S→a||(T) T→T,S|S
(1) 解: (执行相应的算法可求得) FIRSTVT(S)={ a, ∧, ( } FIRSTVT(T)={ , , a, ∧, ( } LASTVT(S)={ a, ∧, ) } LASTVT(T)={ , , a, ∧, ) }
(1) 正规式 1(0|1)*101
0
0
DFA:
3,2
1 0
3,5,2
1 1 0
x
1
1,3,2
1
0
3,4,2
1
3,Y,4,2 I0 I1 1 3 3 3 5 3
I {X} {1,3,2} {3,2} {3,4,2} {3,5,2} {3,Y,4,2}
I0 {3,2} {3,2} {3,5,2} {3,2} {3,5,2}
2019/1/29 22
CH.5.练习题2(P133.)
2.(2).给出(a,(a,a))“移进-归约”的过程。 (2) 解: (a,(a,a))的“移进-归约”过程: 步骤 符号栈 输入串 动作 9 #(T,( S ,a))# 归约 S → a 10 #(T,(T , a ))# 归约 T → S 11 #(T,(T, a ))# 移进 , 12 #(T,(T, a ))# 移进 a 13 #(T,( T,S ))# 归约 S → a 14 #(T, (T ) )# 归约 T → T,S 15 #(T, (T) )# 移进 ) 16 #( T, S )# 归约 S → (T)
编译原理考试题及答案
编译原理考试题及答案一、选择题(每题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. 假设编译器在进行语法分析时,遇到一个语法错误的代码片段,请简述编译器如何处理这种情况。
编译原理习题及答案
2. 正规式 M 1 和 M 2 等价是指_____。 A.( ) M1 和 M2 的状态数相等 C.( ) M1 和 M2 所识别的语言集相等 B.( ) M1 和 M2 的有向边条数相等 D.( ) M1 和 M2 状态数和有向边条数相等
3. 文法 G:S→xSx|y 所识别的语言是_____。 A.( ) xyx B.( ) (xyx)* C.( ) xnyxn(n≥0) D.( ) x*yx*
10.编译程序使用_____区别标识符的作用域。 A. ( ) 说明标识符的过程或函数名 B.( ) 说明标识符的过程或函数的静态层次 C.( ) 说明标识符的过程或函数的动态层次 D. ( ) 标识符的行号 三、填空题(每空 1 分,共 10 分) 1.计算机执行用高级语言编写的程序主要有两种途径:___解释__和__编译___。 2.扫描器是__词法分析器___,它接受输入的__源程序___,对源程序进行___词法分析__并识别出一个个 单词符号,其输出结果是单词符号,供语法分析器使用。 3.自上而下分析法采用___移进__、归约、错误处理、___接受__等四种操作。 4.一个 LR 分析器包括两部分:一个总控程序和___一张分析表__。 5.后缀式 abc-/所代表的表达式是___a/(b-c)__。 6.局部优化是在__基本块___范围内进行的一种优化。 四、简答题(20 分) 1. 简要说明语义分析的基本功能。 答:语义分析的基本功能包括: 确定类型、类型检查、语义处理和某些静态语义检 查。
4lr0分析器所谓lr0分析是指从左至右扫描和自底向上的语法分析且在分析的每一步只须根据分析栈当前已移进和归约出的全部文法符号并至多再向前查看0个输入符号就能确定相对于某一产生式左部符号的句柄是否已在分析栈的顶部形成从而也就可以确定当前所应采取的分析动作移进还是按某一产生式进行归约等
编译原理试卷及答案
得
分
二、简答题(每小题5分,共计20分)
1、请说明什么是算符优先文法?
答:(1)在CFG中无空产生式,且右部无相邻的非终极符
(2)任意两个相邻的终极符间至多只存在一种关系
2、哪些优化措施是主要针对于循环实现的?可举例说明
答:代码外提
强度削弱
归纳变量删除
进行翻译后的四元式序列?并以此解释什么是链接与回填?
答:
(1)(jn,a,-,0)
(2)(j,-,-,3)回填
(3)(jn,b,-,5)回填
(4)(j,-,-,0)
(5)(<,e,f,1) E.TC链接
(6)(j,-,-,4)E.FC
在翻译过程中,常常会出现若干转移四元式转向同一目标,但此目标的具体位置又尚未确定的情况,此时我们可将这些四元式用拉链的办法将它们链接起来,用一指针指向链头,在确定了目标四元式的位置之后,再回填这个链。
在I0和I2,I3中存在有移进
归约冲突
但是FOLLOW(A)={d,b,#} {a}{d,b,#}=,所以文法是SLR(1)文法
a
b
d
#
A
I0
S2
r4
r4
r4
1
I1
acc
I2
S2
r4
r4
r4
3ห้องสมุดไป่ตู้
I3
S5
S4
I4
r2
r2
r2
I5
r3
r3
r3
得
分
七、为文法
S(L) |a
LL,S|S
写一个属性翻译文法,它输出文法中a的个数。(10分)
编译原理试题及答案
编译原理试题及答案1. 选择题(每题4分,共40分)1) 当编译器在词法分析阶段遇到无法识别的字符时,应该采取的动作是:A. 直接忽略该字符并继续进行词法分析B. 输出错误信息并终止词法分析过程C. 将该字符标记为非法字符并继续词法分析D. 转交给语法分析器进行处理答案:B2) 下列关于语法分析器的描述中,错误的是:A. 语法分析器使用文法规则将输入的记号流转化为推导树B. 语法分析器可以通过自上而下或自下而上的方式进行解析C. LL(1)文法是一种常用于自上而下语法分析的文法形式D. 语法分析器的输入是词法分析器输出的记号流答案:A3) 以下关于语法制导翻译的说法,正确的是:A. 语法制导翻译是在语义分析阶段完成的B. 语法制导翻译通过产生式的属性传递进行信息的传递和计算C. 语法制导翻译只能用于自上而下的语法分析D. 语法制导翻译是在语法分析阶段完成的答案:B4) 在SLR分析算法中,项目集簇的构造过程中需要进行的操作是:A. 闭包操作和移进操作B. 移进操作和规约操作C. 闭包操作和规约操作D. 闭包操作、移进操作和规约操作答案:D5) 下列关于中间代码生成的叙述中,错误的是:A. 中间代码是一种类似于汇编代码的表示形式B. 中间代码可以直接被目标代码生成器所使用C. 中间代码的生成可以采用三地址码的形式D. 中间代码的生成在语法分析和语义分析之后进行答案:B2. 简答题(每题10分,共30分)1) 请简要描述编译器的主要工作流程。
答案:编译器的主要工作流程包括词法分析、语法分析、语义分析、中间代码生成、优化和目标代码生成等阶段。
在词法分析阶段,编译器将输入的源代码转化为一个个记号流。
接下来,在语法分析阶段,编译器使用文法规则对记号流进行分析,并生成语法树或推导树。
在语义分析阶段,编译器对语法树进行语义检查,并进行类型推导和符号表管理等操作。
中间代码生成阶段将经过语义分析的源代码转化为一种中间表示形式,通常是三地址码。
(完整word版)编译原理期末考试习题及答案(word文档良心出品)
一、填空题| (每题4分,共20分)1.乔母斯基定义的3型文法(线性文法)产生式形式A Ba|a,或A aB|a, A, B € Vn, a,b € Vt 。
2.语法分析程序的输入是单词符号,其输出是语法单位。
3型为B .aB的LR(0)项目被称为移进项目,型为B a.B的LR (0) 项目被称为待约项目,4. 在属性文法中文法符号的两种属性分别为继承属性和综合属性。
5、运行时存贮管理方案有静态存储分配、动态存储分配和堆式存储分配和方案。
二.已知文法G(S)⑴ E T | E+T⑵ T F | F*F⑶ F (E) | i(1)写出句型(T*F+i)的最右推到并画出语法树。
(4分)(2)写出上述句型的短语,直接短语和句柄。
(4分)答:(1)最右推到(2分)E ==> T ==>F ==> (E) ==> (E+T) ==> (E+F) ==> (E+i) ==> (T+i) ==> (T*F+i)(2)语法树(2分)IS/|\7i\E+T(3)(4 分)短语:(T*F+i ) ,T*F+i ,T*F,i直接短语:T*F,i句柄:T*F三.证明文法G(S) : S SaS | £是二义的。
(6分) 答:句子aaa对应的两颗语法树为:因此,文法是二义文法四.给定正规文法G( S):(1) S Sa | Ab |b ⑵A Sa请构造与之等价的DFA ( 6分) 答:对应的NFA 为: (6分)a b {F}① {S} {S}{S,A} ①{S,A} {S,A} {S}五•构造识别正规语言b*a(bb*a)*b* 最小的DFA(要求写出求解过程)。
(15分) 答:(1)对应的NFA(5分)a b{0}{1 , 3} {0} {1,3} ① {2 , 3} {2,3} {1,3}{2,3}六.已知文法G(S):(1) S A | a | (T)⑵ T T,S | S试:(1)消除文法的左递归;(4分)(2) 构造相应的first 和follow 集合。
编译原理期末试题(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.构造编译程序应掌握______。
《编译原理》考试试题及答案(汇总)
编译原理》考试试题及答案(汇总)一、是非题(请在括号内,正确的划",错误的划X)(每个2分,共20分)1 .编译程序是对高级语言程序的解释执行。
(x )2. —个有限状态自动机中,有且仅有一个唯一的终态。
(X)3. —个算符优先文法可能不存在算符优先函数与之对应。
(V )4. 语法分析时必须先消除文法中的左递归。
(x)5. 分析法在自左至右扫描输入串时就能发现错误,但不能准确地指出出错地点。
( V)6. 逆波兰表示法表示表达式时无须使用括号。
(V )7. 静态数组的存储空间可以在编译时确定。
(x)8. 进行代码优化时应着重考虑循环的代码优化,这对提高目标代码的效率将起更大作用。
( x)9. 两个正规集相等的必要条件是他们对应的正规式等价。
(x)(x )10. 一个语义子程序描述了一个文法所对应的翻译工作、选择题 ( 请在前括号内选择最确切的一项作为答案划一个勾, 多划按错4.如果文法G 是无二义的,则它的任何句子aA. ( ) 最左推导和最右推导对应的语法树必定相同B. ( ) 最左推导和最右推导对应的语法树可能不同C. ( ) 最左推导和最右推导必定相同论)( 每个 4 分,共 40分) 1.词法分析器的输出结果是。
A .( ) 单词的种别编码C .( ) 单词的种别编码和自身值 2. 正规式 M 1 和 M 2 等价是指。
A. ( ) M1和M2的状态数相等 的有向边条数相等C. ( ) M1和M2所识别的语言集相等 向边条数相等3. 文法G S f 所识别的语言是。
A. ( )B . ( ) ()*C . ( ) (nB. ( ) 单词在符号表中的位置 D . ( ) 单词自身值B . ( ) M1 和 M2D. ( ) M1 和M2状态数和有> 0) D . ( ) x**D. ( ) 可能存在两个不同的最左推导,但它们对应的语法树相同5.构造编译程序应掌握6.四元式之间的联系是通过实现的。
《编译原理》考试试题及答案
《编译原理》考试试题及答案(附录)一、判断题: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.扫描器的任务是从()中识别出一个个()。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《编译原理》考试题
一、选择题:(每题2分,共20分)
1.文法G所描述的语言是的集合。
A)文法G的字汇表V中所有符号组成的符号串
B)文法G的字汇表V的闭包V*中的所有符号串
C)由文法的识别符号推出的所有符号串
D)由文法的识别符号推出的所有终结符号串
2.设有文法G[S]=({b},{S,B},S,{S→b|bB,B→bS}),试问该文法所描述的语言是。
A)L(G[S])={b i|i≥0} B)L(G[S])={b2i|i≥0}
C)L(G[S])={b2i+1|i≥0} D)L(G[S])={b2i+1|i≥1}
3.一个句型中的最左称为该句型的句柄。
A)短语B)简单短语
C)素短语D)终结符号
4. 正则文法能产生下面的语言:L={a n b n|n≥1}。
A)存在一个B)存在多个
C)不存在D)无法判断
5.编译程序中的语法分析器接受以为单位的输入,并产生有关信息供以后各阶段使用。
A)表达式B)产生式
C)单词D)语句
6.编译方法中,自顶向下的语法分析方法有。
A)简单优先分析方法B)算符优先分析方法
C)SLR方法D)LL(1)分析方法
7.简单优先分析法每次都是对进行归约。
A)最左短语B)简单短语C)句柄D)最左素短语
8.LR语法分析栈中存放的状态是识别的DFA状态。
A)前缀B)可归前缀
C)项目D)句柄
9.表达式-(a+b)/(c-d)-(a+b*c)的逆波兰表示是(@代表单目运算-)。
A)ab+cd-/@bc*a+- B)ab+/cd@bc*a+--
C)ab+@cd-/abc*+- D)ab+cd-/abc*+@-
10.乔姆斯基(Chomsky)把文法分成四种类型,即0型、1型、2型和3型。
其中,3型文法是。
A)上下文无关文法B)上下文有关文法
C)正则文法D)短语文法
二、填空题:(每空1分,共20分)
1.假设G是一个文法,S是文法的开始符号,如果S *x,则称x是。
2.已知文法G[E]:E→E+T|T,T→T*F|F,F→(E)|i;该文法的开始符号是,终结符号集合V T是,非终结符号集合V N 是,句型T+T*F+i的短语有T+T*F+i,第一个T,T*F和。
3.确定的有限自动机DFA是一个,通常表示为。
4.LL(1)分析法中,第一个L的含义是,第二个L的含义是,“1”的含义是。
5.自底向上语法分析方法的基本思想是:从待输入的符号串开始,利用文法的规则步步向上进行,试图到文法的。
6.在编译程序中安排中间代码生成的目的是和。
7.文法符号的属性有两种,一种称为,另一种称为。
8.一个程序是正确的,包含两层含义:一是;二是。
9.文法G产生的全体是该文法描述的语言。
三、判断题:(每题2分,共20分)
1.符号就是字符。
2.移进—归约法是一种语法分析方法。
3.每一个NFA都对应有唯一的一个最小化的DFA。
4.编译程序的输入是高级语言程序,输出是机器语言程序。
5.编译程序与解释程序的区别在于编译程序对源程序进行了翻译,而解释程序则没有。
6.有的编译程序可以没有目标代码生成部分。
7.一个语言的文法是唯一的。
8.每一个DFA都对应有唯一的一个NFA。
9.所有的LL(K)文法都是二义性的。
10.回填就是稍后填写转移指令的地址。
四、应用题:(每题5分,共40分)
1.请消除文法G[S]:S→a|(T)| T→T;S|S的左递归。
2.请构造语言L={a n b n c i|n≥1,i≥0}的文法。
3.已知文法G[S]:S→aB|bA,A→aS|bAA|a,B→bS|aBB|b,请给出串aabb 的最左和最右推导。
4.为正规式(a|b)*a(a|b)构造一个非确定的有限自动机(NFA)。
5.请将图中的DFA最小化(写明过程)。
题5图
6.考虑文法G[A]:A→A∨B|B,B→B∧C|C,C→﹁D|D,D→(A)|i,请求出该文法中各非终结符的FIRST集和FOLLOW集,并判断该文法是否是LL(1)文法。
7.请给出算术表达式-(a+b)*(c+d)-(a+b+c)的四元式序列。
8.已知某文法以LR(0)项目集为状态的识别活前缀的DFA如图所示,请构造它的LR(0)分析表。
题8图。