编译原理总复习
- 格式:ppt
- 大小:4.02 MB
- 文档页数:36


编译原理复习题及答案
一、 选择题
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.PASCAL
12. 把汇编语言程序翻译成机器可执行的目标程序的工作是由(B)完成的。
A. 编译器 B. 汇编器 C. 解释器 D. 预处理器
13. 用高级语言编写的程序经编译后产生的程序叫(B)
A.源程序 B.目标程序 C.连接程序 D.解释程序
14. (C)不是编译程序的组成部分。
第八节 习题一、单项选择题
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、使用 可以定义一个程序的意义。
a.语义规则 b.词法规则
c.产生规则 d.词法规则
7、词法分析器的输入是 。
a.单词符号串 b.源程序
c.语法单位 d.目标程序
8、中间代码生成时所遵循的是- 。
a.语法规则 b.词法规则
c.语义规则 d.等价变换规则
9、编译程序是对 。
a.汇编程序的翻译 b.高级语言程序的解释执行
c.机器语言的执行 d.高级语言的翻译
10、语法分析应遵循 。
a.语义规则 b.语法规则
c.构词规则 d.等价变换规则
解答
1、将编译程序分成若干个“遍”是为了使编译程序的结构更加清晰,故选b。
2、构造编译程序应掌握源程序、目标语言及编译方法等三方面的知识,故选d。
3、对编译而言,变量既持有左值又持有右值,故选c。
参考答案
一、单项选择题(共10小题,每小题2分,共20分)
1.语言是
A.句子的集合 B.产生式的集合
C.符号串的集合 D.句型的集合
2.编译程序前三个阶段完成的工作是
A.词法分析、语法分析和代码优化
B.代码生成、代码优化和词法分析
C.词法分析、语法分析、语义分析和中间代码生成
D.词法分析、语法分析和代码优化
3.一个句型中称为句柄的是该句型的最左
A.非终结符号 B.短语 C.句子 D.直接短语
4.下推自动机识别的语言是
A.0型语言 B.1型语言
C.2型语言 D.3型语言
5.扫描器所完成的任务是从字符串形式的源程序中识别出一个个具有独立含义的最小语法单位即
A. 字符 B.单词 C.句子 D.句型
6.对应Chomsky四种文法的四种语言之间的关系是
A.L0L1L2L3 B.L3L2L1L0
C.L3=L2L1L0 D.L0L1L2=L3
7.词法分析的任务是
A.识别单词 B.分析句子的含义
C.识别句子 D.生成目标代码
8.常用的中间代码形式不含
A.三元式 B.四元式 C.逆波兰式 D.语法树
9. 代码优化的目的是
A.节省时间 B.节省空间
C.节省时间和空间 D.把编译程序进行等价交换
10.代码生成阶段的主要任务是
A.把高级语言翻译成汇编语言
B.把高级语言翻译成机器语言
1
一、 单选题(每题2分,共20分)
1. 编译器的( )阶段可将源程序的字符流收集到若干记号中。
A. 语法分析 B. 语义分析 C. 代码生成 D. 词法分析
2. 文法AaA | b属于正则文法,正则文法在乔姆斯基层次中对应于( )文法。
A. 1型 B. 2型 C. 3型 D. 0型
3. 某C语言源代码文件包含#include ,( )将对源代码进行处理,把文件stdio.h包含进去。
A.编译器 B.解释器 C.汇编器 D.预处理器
4. LL(1)文法的充要条件是( )。
A.对于文法中的每条产生式Uα1|α2|…|αn,要求FIRST(αi)∩FIRST(αj)=Φ(i≠j)
B.该文法对应的LL(1)分析表中每个项目最多只有一条产生式。
C.A和B
D.都不是
5. 以下说法中正确的是( )。
A.任何语言都可以描述为一个正则表达式。
B.对于任何一个NFA M,都存在一个DFA M’,满足L(M)= L(M’)。
C.任何一个DFA只有一个终态。
D.NFA的弧上标记只含输入字母表中的元素。
6.合成属性的计算可以通过对语法树进行( )遍历进行。
A. 前序 B.中序 C.后序 D.任意
7.乔姆斯基的2型文法是这样一种语言,其产生式限制为( )。
A. α->β B. P->β C. P->a或P->aβ D. αPγ->αβγ
8. 正则式的“*”读作( )。
A. 并且 B.连接 C.正则闭包 D.闭包
9. 编译程序中的语义分析器接受以( )为单位的输入,并产生信息供以后各阶段使用。
A. 语法树 B.子程序 C.单词 D.语句
10.文法A->aAb|ab生成的语言是( )。