第一章
一. 单项选择
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. 中间代码优化阶段
二. 多项选择
1. 一个编译器可能有的阶段为( )
A. 词法分析
B. 语法分析
C. 语义分析
D. 中间代码生成
E. 目标代码生成
2. 编译器的各个阶段的工作都涉及到( )
A. 表格处理
B. 词法分析
C. 语法分析
D. 语义分析
E. 出错处理
3. 一般来说,编译器可分为前端和后端,下列编译阶段可被划分为编译的前端的有:( )
A. 词法分析
B. 语法分析
C. 语义分析
D. 中间代码生成
E. 中间代码优化
判断题
一个编译器就是一个程序,该程序的输入是源程序,输出是与之等价的目标程序。
编译与解释程序的根本区别是:是否生成目标代码。
解释程序和编译程序的前端是相同的,其实现技术基本上也是相通的。
一般而言,中间代码是一种独立于具体硬件的记号系统。
综合题
请画出编译程序的总体框图。
源程序的解释和和编译执行的主要区别是什么?
第三章
一. 单项选择题
1.词法分析器的输出是:( )
A.单词在符号表中的位置
B.单词的自身值
C.单词的自身值和单词的种类码
D.单词的种类码
2.词法分析的依据是:( )
A.语义规则
B.构词规则
C.语法规则
D.等价变换规则
3. 两个DFA等价是指:( )
A. 这两个DFA的状态数相同
B. 这两个DFA的状态数和有向弧条数都相等
C. 这两个DFA的有向弧条数相等
D. 这两个DFA接受的语言相同
4. 词法分析器的输入是:( )
A. Token序列
B. 源程序
C. 目标程序
D. 符号表
5. 下列符号串不可以由符号集S={a,b}上的正闭包运算产生的是:( )
A. ε
B. a
C. aa
D. ab
二. 多项选择
1. 令S={a,b},则S上的符号串的全体可用下面的正规式表示。( )
A. (a|b)*
B. (a*|b*)*
C. (a|b)+
D. (ab)*
E. (a*b*)*
2. 下列符号串是符号集S={a,b}上的正规式的有:( )
A. ε
B. a
C. ab
D. (ab|a) (ab|a)
E. ab|ab
3. 正规式服从的代数规律有:( )
A. “或”运算服从交换律
B. “或”运算服从结合律
C. “连接”运算服从交换律
D. “连接”运算服从结合律
E. “连接”运算可对“或”运算进行分配
4. 令S={a,b},则S上的所有以b开头,后跟若干个(可为0个)ab的符号串的全体可用下面的正规式表示。( )
A.b (ab)*
B. (ba)*b
C. b(a|b)+
D. (ba)+b
E. b (a|b)*
三. 判断题
确定自动机是非确定自动机的特例。( )
字母表是元素的非空无穷集合,我们把字母表中的元素称为符号,因此字母表也称为符号集。( )
由字母表中的符号组成的任何有穷序列称为符号串。( )
在符号串中,符号的顺序是无关紧要,符号串ab就与ba是相同的符号串。( )
DFA可以采用五元组,状态转换图或者矩阵表示。( )
对于任何两个有穷自动机M和M′,如果L(M)=L(M′),则称M与M′是等价的。( )
?上一个符号串集Vì?*是正规的,当且仅当存在一个?上的确定有穷自动机M,使得V=L(M)。( )
一个DFA只可能有一个开始状态。( )(改为终止状态?)
与NFA等价的DFA(不考虑重构)可能有多个。( )
与NFA等价的最小化DFA(不考虑重构)只能有一个。( )
两个DFA,如果其状态图的状态个数不相同,则这两个DFA必不等价。( )
设有两个正规式r,s,则有L(r|s)=L(r)|L(s)。( )
对任意正规式e,都存在DFA M,使得L(M)=L(e)。( )
四. 综合题
写出描述C语言标识符的正规式。
某DFA的状态转换表(即矩阵表示)如图2-1,试写出该DFA的五元组式形式和状态转换图。(其中状态上标为0表示该状态为开始状态,为*表示该