第一章
1.编译器(Compiler)能捕捉的错误都是静态错误(Static errors)。答案:对
2.编译器只能识别动态(Dynamic)语义,但不能识别静态(Static)语义。答案:错
3.对源程序进行编译正确处理顺序为()答案:词法分析、语法分析、语义分
析、代码生成
4.编译器的各个阶段的产物分别是()、中间代码和目标代码。答案:记号序
列、语法树、注释树
5.()执行翻译代码的功能,且立即执行源程序,而不产生中间代码。答案:
解释程序
6.将编译程序分成若干个“遍”是为了____。答案:利用有限的机器内存并提高机
器的执行效率
7.词法分析器用于识别_____。答案:单词
8.在编译器的功能模块中,扫描器的功能是()。答案:词法分析
9.编译器进行的是()答案:静态语义分析
10.编译器中词法分析的输入和输出分别是()答案:字符串、记号串
第二章
1.确定的自动机以及不确定的自动机都能正确地识别正规集。答案:对
2.正则文法、 DFA和正则表达式均可以用于描述高级程序设计语言的词法。
答案:对
3.在有穷自动机中,两个状态是等价的条件是()。答案:A和B
4.扫描器所完成的任务是从字符串形式的源程序中识别出一个个具有独立含义
的最小语法单位即()答案:单词
5.设∑为{a,b},则a,ba,{},Ø都是∑上的正规式。答案:对
6.以下( )不是DFA的组成部分。答案:初始状态集合
7.在有穷自动机中,有穷自动机的状态s和t不等价,则称这两个状态是可
区别的。答案:对
8.“由大写字母组成的、以Z开头并且不以Z结尾的字符串”的正则表达式是()
答案:Z [a-Z]*[A-Y]
9.下面( )是词法分析的理论基础。答案:有穷自动机
第三章
1.高级语言编译程序常用的语法分析方法中,递归下降分析法属于()分析
方法。答案:自顶向下
2.下面哪种分析方法是自顶向下分析()。答案:LL(1)
3.推导是一个替换序列,每一步都是对()进行替换,形成一个从单独的结
构名开始,结束于一串记号符号的过程。答案:非终结符
4.语言中具有独立意义的最小语法单位是()。答案:词(记号)
5.词法分析器交给语法分析器的文法符号一定是(),它一定只出现在产生
式的()部。答案:终结符右
6.在文法中可能引起二义性的原因有:()。答案:其他选项都有可能
7.正则文法产生的语言都可以用上下文无关文法来描述。答案:对
8.编译过程中,语法分析器的任务是____________。①分析单词是怎样构成的②
分析单词串是如何构成语句和说明的③分析语句和说明是如何构成程序的
④分析程序的结构答案:②③④
9.LL(1)分析方法中第一个“L”、第二个“L”以及括号中的数字“1”分别代表的意
义是:答案:输入符号从左至右处理;分析过程对应最左推导;移入一个符
号。
10.一个文法所描述的语言是( );描述一个语言的文法是( )。答案:唯一的;不唯
一的
第四章
1.递归下降的基本方法是将非终结符A的文法规则看作是()的定义。答案:
识别A的一个过程
2.每个文法都能改写为LL(1)文法。答案:错
编译器错误3.一个LL(l)文法可能是无二义的,也可能是二义性的文法。答案:错
4.递归下降法允许任一非终结符是直接左递归的。答案:错
5.对下面文法中非终结符First集合描述正确的是()。E->(L)|a|εL->EL+|E
答案:First(L)={ ( a + ε}
6.LL(1)预测分析表中,索引行的是(),索引列的是(),表示当非终结符
遇到输入栈的终结符的时候,应该用什么规则来替换。答案:非终结符终结符
7.通过算法可以判定文法是否是二义性的。答案:错
8.文法经过修改都可以进行自顶向下分析。答案:错
9.如果产生式中没有ε-产生式,那么无需求解Follow集合。答案:对
10.判断文法是否是LL(1)文法时,第一个判定规则是,同一个产生式的多个
产生式选项的First集合两两相交为空。答案:对
第五章
1.任何一个L属性文法(L-Attributed Grammar)都是S属性文法(S-Attributed
Grammar)。答案:错
2.给定一个属性文法,通过对文法的适当修改,而无须改变文法的语言,所有
的合成属性(Synthesized attributes)都可以转换为继承属性(Inherited
attributes)。答案:错
3.编译器既能识别静态语义,又能识别动态语义。答案:错
4.编译器能够识别()的语义。答案:静态
5.编译器(Compiler)能捕捉的错误都是动态错误(Dynamic errors)。答案:错
6.编译器只能识别静态(Static)语义,但不能识别动态(Dynamic)语义。答案:对
7.任何一个S属性文法都是L属性文法。答案:错
8.给定一个属性文法,通过对文法的适当修改,而无须改变文法的语言,所有
的继承属性都可以转换为合成属性。答案:错
9.以下说法正确的是( )。语义规则中的属性有两种:综合属性与继承属性答案:
以下说法正确的是( )。语义规则中的属性有两种:综合属性与继承属性
10.文法符号的属性有两种,一种称(),另一种称为()。答案:继承属性综
合属性
第六章
1.对于数据空间的存贮分配,FORTRAN采用动态贮存分配策略。答案:错
2.下列对完全静态存储分配的含义描述错误的是( )。答案:允许递归调用
3.过程信息表(过程活动记录)中至少应该包括有____。①过程名②过程的静
态层次③过程的入口地址④过程首部在源程序中的行号⑤有关过程参数的
信息答案:①②③④⑤
4.动态存储分配时,可以采用的分配方法是()1) 以过程为单位的栈式动态
存储分配2) 堆存储分配3) 最佳分配方法答案:1,2,3
5.数组元素的地址计算与数组的存储方式有关。答案:对
6.编译程序使用_____区别标识符的作用域。答案:说明标识符的过程或函数名
7.C语言,允许递归过程,还允许用户动态地申请和释放存储空间,应采用以
下哪种存储分配策略()。答案:都有
8.活动记录中静态链的作用是()。答案:用以实现对非局部名字的访问
9.过程的活动生存期是指从该过程体第一步操作到最后一步操作之间的操作序。
两个过程的活动生存期可以重叠。答案:错
10.一个程序可用一个流图来表示。答案:对
第七章
1.以下各个编译器模块除了()外,都无需考虑目标机器的特性。答案:代码
生成
2.后缀表示的特点是()。答案:其他选项都是
3.对代码生成阶段(Code Generation)描述正确的是()。答案:不仅要考虑源
程序的特征,而且要考虑目标机的硬件细节
4.A:=8(7B-C)的后缀表示是()。答案:7B C-8A:=
5.逆波兰法表示的表达式亦称前缀式。答案:错
6.目标代码生成时,应考虑如何充分利用计算机的寄存器的问题。答案:错
7.常用的中间代码形式不含()。答案:语法树
8.代码优化的目的是()。答案:节省时间和空间
9.代码生成阶段的主要任务是()。答案:把中间代码变换成依赖具体机器的
目标代码