4
C.运行时间短但占用内存空间大 D.运行时间短且占用存储空间小
39.下列( C )优化方法不是针对循环优化进行的。
A.强度削弱 B.删除归纳变量 C.删除多余运算 D.代码外提
40.编译程序使用( B )区别标识符的作用域。
A.说明标识符的过程或函数名 B.说明标识符的过程或函数的静态层次
C.说明标识符的过程或函数的动态层次 D.标识符的行号
41.编译程序绝大多数时间花在( D )上。
A.出错处理 B.词法分析 C.目标代码生成 D.表格管理
42. 编译程序是对( D )。
A.汇编程序的翻译 B.高级语言程序的解释执行 C.机器语言的执行 D.高级语言的翻译
43. 采用自上而下分析,必须( C )。
A.消除左递归 B.消除右递归 C.消除回溯 D.提取公共左因子
44.在规范归约中,用( B )来刻画可归约串。
A.直接短语 B.句柄 C.最左素短语 D.素短语
45. 若 a 为终结符,则 A->α · aβ 为( B ) 项目。
A.归约 B.移进 C.接受 D.待约
46.间接三元式表示法的优点为( A )。
A.采用间接码表,便于优化处理 B.节省存储空间,不便于表的修改
C.便于优化处理,节省存储空间 D.节省存储空间,不便于优化处理
47.基本块内的优化为( B )。
A.代码外提,删除归纳变量 B.删除多余运算,删除无用赋值
C.强度削弱,代码外提 D.循环展开,循环合并
48. 在目标代码生成阶段,符号表用( D )。
A.目标代码生成 B.语义检查 C.语法检查 D.地址分配
49.若项目集 I
k
含有 A->α · ,则在状态 k 时,仅当面临的输入符号 a∈FOLLOW(A)时,才采取“A->α · ”动作的
一定是( D )。
A.LALR 文法 B.LR(0)文法 C.LR(1)文法 D.SLR(1)文法
50.堆式动态分配申请和释放存储空间遵守( D )原则。
A.先请先放 B.先请后放 C.后请先放 D.任意
三、填空题
1.编译程序的工作过程一般可以划分为词法分析,语法分析,语义分析,中间代码生成,代码优化等几个基本阶段,
同时还会伴有__表格处理___和 ___出错处理__。
2.编译方式与解释方式的根本区别在于__是否生成目标代码___。
3.产生式是用于定义___语法成分__的一种书写规则。
4.设 G 是一个给定的文法,S 是文法的开始符号,如果 S->x( 其中 x∈VT*), 则称 x 是文法的一个__句子___。
5.自顶向下的语法分析方法的基本思想是:从文法的__开始符号____开始,根据给定的输入串并按照文法的产
生式一步一步的向下进行__直接推导____,试图推导出文法的__句子____,使之与给定的输入串___匹配___。
6.常用的参数传递方式有___传地址__,传值和传名。
7.一个句型中的最左简单短语称为该句型的___句柄__。
8.对于文法的每个产生式都配备了一组属性的计算规则,称为 __语义规则___ 。
9.一个典型的编译程序中,不仅包括__词法分析___、__语法分析___、__中间代码生成___、代码优化、目标代
码生成等五个部分,还应包括表格处理和出错处理。
10. 从功能上说,程序语言的语句大体可分为__执行性___语句和__说明性___语句两大类。
11. 扫描器的任务是从__源程序___中识别出一个个___单词符号__。
12. 产生式是用于定义__语法范畴___的一种书写规则。
13.语法分析是依据语言的__语法___规则进行的,中间代码产生是依据语言的__语义___规进行的。
14.语法分析器的输入是__单词符号串___,其输出是__语法单位___。
15.一个名字的属性包括__类型___和__作用域___。