一、单选题(共 14 道试题,共 56 分。)V 1. 在编译的各阶段中,和目标机器关系最为密切的是( )。
A. 词法分析
B. 语法分析
C. 语义分析
D. 目标代码生成
满分:4 分
2. 词法分析器的输出是( )。
A. 字符串
B. 二元式
C. 三元式
D. 四元式
满分:4 分
3. 正规式a*表示的是( )。
A. 字符a
B. 由字母a组成的所有串
C. 字符串aa
D. 字符串a*
满分:4 分
4. ( )是为每个标识符保存一个记录的数据结构,记录的域是标识符的属性。
A. 符号表
B. 代码表
C. 源程序
D. 出错表
满分:4 分
5. Chomsky 定义的四种形式语言文法中, 3 型文法又称为( )文法。
A. 短语文法
B. 上下文无关文法
C. 上下文有关文法
D. 正规文法
满分:4 分
6. 下面的优化项目中,不属于循环优化的是( )。
A. 不变运算外提
B. 削弱运算强度
C. 消除归纳变量
D. 合并已知运算
满分:4 分
7. 语法分析程序输出( )。
A. 记号系列
B. 分析树或语法树
C. 中间代码
D. 目标代码
满分:4 分
8. 算符优先分析每次规约的是( )。
A. 最左短语
B. 直接短语
C. 句柄
D. 最左素短语
满分:4 分
9. 在语法分析处理中,FIRST集合、FOLLOW集合、SELECT集合均是( )。
A. 非终极符集
B. 终极符集
C. 字母表
D. 状态集
满分:4 分
10. 赋值语句X::=-(a+b)/(c-d)-(a+b*c)r的逆波兰表示是 ( )。
A. Xab+cd-/-bc*a+-:=
B. Xab+/cd--bc*a+--:=
C. Xab+-cd-/abc*+-:=
D. Xab+cd-/abc*+--:=
满分:4 分
11. 由于受到具体机器主存容量的限制,编译程序几个不同阶段的工作往往被组合成( )。
A. 过程
B. 程序
C. 批量
D. 遍
满分:4 分
12. 下述方法中,( )不是自下而上分析方法。
A. 规范归约
B. 算符优先分析法
C. 递归下降分析法
D. LR分析法
满分:4 分
13. ( )的任务是从源代码中读取字符并形成由编译器的以后部分处理的逻辑单元——记号。
A. 扫描程序
B. 语法分析程序
C. 语义分析程序
D. 源代码优化程序
满分:4 分
14. 类型转换时,整数到实数的转换称为( )。
A. 截断
B. 舍入
C. 拓展
D. 收缩
满分:4 分
二、多选题(共 4 道试题,共 16 分。)V 1. 栈式分配策略在( )情况下行不通。
A. 过程活动停止后,局部名字的值还必须维持
B. 被调用者的活动比调用者的活动活得更长,此时活动树不能正确描绘程序的控制流
C. 不遵守栈式规则的有Pascal语言和C语言的动态变量
D. Java禁止程序员自己释放空间
满分:4 分
2. 在如下上下文无关文法G中: stmt-sequence → stmt; stmt-sequence | stmt stmt → s 哪些是终结符号?( )
A. stmt-sequence
B. stmt
C. s
D. ;
满分:4 分
3. 下面哪些语言特征会影响存储分配策略?()
A. 过程能否递归
B. 当控制从过程的活动返回时,局部变量的值是否要保留
C. 过程能否访问非局部变量
D. 过程调用的参数传递方式
满分:4 分
4. 在目标代码优化阶段,常见的优化有( )。
A. 选择编址模式以提高性能
B. 将速度慢的指令更换成速度快的
C. 删除注释
D. 删除多余的操作
满分:4 分
三、判断题(共 7 道试题,共 28 分。)V 1. 我们可以概括地认为中间代码是编译器使用的源代码的任何一个内部表示。 ( )
A. 错误
B. 正确
满分:4 分
2. 每个文法的综合符合集和集成属性集的交应该为空。 ( )
A. 错误
B. 正确
满分:4 分
3. 解释程序与编译程序的不同指出在于:它立即执行源程序而不是生成在翻译完成之后才执行的目标代码。( )
A. 错误
B. 正确
满分:4 分
4. 文法的二义性和语言的二义性是两个不同的概念。( )
A. 错误
B. 正确
满分:4 分
5. 每个文法都能改写为LL(1)文法。 ( )
A. 错误
B. 正确
满分:4 分
6. 仅考虑一个基本块,不能确定一个赋值是否真是无用的。 ( )
A. 错误
B. 正确
满分:4 分
7. 语义分析的任务包括两方面,一个是静态语义检查,一个是动态语义的解释执行并生成中间代码。 ( )
A. 错误
B. 正确
满分:4 分