编译概念复习题(参考答案)
一、填空题
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.产生规则
10.测试一个编译程序时使用的测试数据是 。
A.源程序 B.中间代码
C.目标程序 D.任意数据
11.可以作为目标代码的语言是 。
A.高级语言 B.中间语言
C.低级语言 D.程序设计语言
12.编译程序检查、处理源程序中的错误具体指的是 。
A.词法错误 B.语法错误
C.语义错误 D.以上三项都是
13.同正则表达式(a | b)+等价的正则表达式是 。
A.(a | b) * B.(a | b) (a | b) *
C.(a b)* (a b) D.(a | b)| (a | b)*
14.词法分析器的输出结果是 。
A.单词自身 B.单词的机内符
C.单词的词义信息 D.单词的词法信息
15.如果一个正则表达式所代表的集合是无穷的,则它必含有 运算。
A.连接运算:“·” B.或运算:“|”
C.闭包运算:“*” D.括弧:“(” 和 “)”
16.称有限自动机A1和A2等价是指 。
A.A1和A2都是定义在一个字母表Σ上的有限自动机
B.A1和A2状态数和有向边数相等
C.A1和A2状态数或有向边数相等
D.A1和A2所能识别的字符串集合相同
17.DFA同NFA的不同之处是 。
A.DFA的一个状态发出的边不能相同,而NFA的一个状态可以发出多条相同的边
B.DFA可以含有多个终止状态,而NFA可以含有多个初始状态
C.DFA和NFA 所描述的字符串集合不同
D.DFA同NFA使用的构造技术和对象不同
18.同正则表达式(a | b)*等价的正则表达式是 。
A.(a | b)+ B.a* | b*
C.(a b)* D.(a* | b*)+
19.词法分析器的加工对象是 。
A.中间代码 B.单词
C.源程序 D.元程序
20.称正则表达式R1和R2等价是指 。
A.R1和R2都是定义在一个字母表Σ上的正则表达式
B.R1和R2中使用的运算符相同
C.R1和R2代表一个正则集
D.R1和R2代表不同的正则集
21.如果一个有限自动机所能识别的字符串集合是无穷的,则它必 。
A.含有多个状态 B.含有多条有向边
C.含有多个终止状态 D.含有回路
22.DFA同NFA的不同之处是 。
A.DFA只能含有一个终止状态,而NFA可以含有多个终止状态
B.DFA只能含有一个初始状态,而NFA可以含有多个初始状态
C.DFA和NFA 所描述的字符串集合不同
D.DFA同NFA使用的构造技术和对象不同
23.同正则表达式a*b*等价的文法是 。
A.G1:S→aS|bS|ε B.G2:S→aSb|ε
C.G3:S→aS|Sb|ε D.G4:S→abS|ε
24.如果一个文法G是二义性文法,则必存在某个句子x∈L(G),该句子 。
A.存在两个不同的最右推导和一个最左推导
B.存在两个不同的最左推导和一个最右推导
C.最左推导和最右推导不同
D.存在两个不同的最左推导和两个不同的最右推导
25.称文法G1和G2等价是指 。
A.L(G1)≡L(G2) B.L(G1)=L(G2)
C.L(G1)⊆L(G2) D.L(G2)⊆L(G1)
26.由文法的开始符出发通过若干步(包括0步)推导产生的文法符号序列是 。
A.语言 B.句型
C.句子 D.句柄
27.最左简单子树的叶结点,自左至右排列组成句型的 。
A.短语 B.简单短语
C.句柄 D.素短语
28.CFG文法G:S→[ S ] | [ ]所产生的语言是 。
A.[ m ] n (m,n>0) B.[ m ] n (m,n>1)
C.[ m ] m (m≥1) D.[ n ] n(n≥0)
29.如果一个文法G是无二义性文法,则对任一句子x∈L(G),该句子 。
A.可能存在两个不同的最右推导
B.可能存在两个不同的最左推导
C.最左推导和最右推导不同
D.仅存在一个最左推导和一个最右推导
30.正则文法的句型具有的特点是 。
A.句型中仅含一个非终结符或不含非终结符
B.句型中仅含一个非终结符或只含终结符
C.句型中仅含一个非终结符且在句型的最右端,或不含非终结符
D.句型中可含多个非终结符且在句型的最左端,或不含非终结符
31.规范推导是 。
A.最右推导的逆过程 B.最左推导
C.最左归约的逆过程 D.最右规约的逆过程
32.在自顶向下语法分析中,要求文法满足 。
A.无左递归 B.无左公因子
C.无右递归 D.无回溯
33.一个文法G是LL(1)文法的充要条件是对每一个非终结符A的任意两个不同产生式A→α | β,有 。
A.FIRST(α)∩FIRST(β)=Φ
B.FIRST(α)∩FOLLOW(A)=Φ
C.SELECT(A→α)∩SELECT(A→β)=Φ
D.SELECT(A→α)∩SELECT(A→β)≠Φ
34.一个文法是简单优先文法应满足的条件是 。
⑴ 没有形如A→…BC…的产生式(A,B,C∈VN)
⑵ 没有形如A→ε产生式
⑶ 任意两个终结符号之间至多存在一种优先关系
⑷ 没有相同的产生式右部
可选项有:
A.⑴⑵⑶ B.⑵⑶⑷ C.⑴⑶⑷ D.⑴⑵⑷ 35.算符优先分析法每次都是对 进行归约。
A.短语 B.最左素短语
C.素短语 D.句柄
36.一个文法G,若 ,则称它是LL(1)文法。
A.G中不含左递归
B.G无二义性
C.G的LL(1)分析表不含多重定义
D.G中产生式不含左公因子
37.设有文法G=({S},{a},{ S→SaS | ε},S),该文法是 。
A.LL(1)文法 B.LR(0)文法
C.算符优先文法 D.二义性文法
38.若B为非终结符,则A→α·Bβ为 项目。
A.移入 B.待约
C.归约 D.接受
39.LR分析器核心部分是一张分析表,该表由 组成。
A.ACTION表 B.GOTO表
C.LL(1)分析表 D.ACTION表和GOTO表
40.在递归子程序方法中,如果文法存在左递归,则会使分析过程产生 。
A.回溯 B.非法调用
C.有限次调用 D.无限循环
41.编译程序的语法分析器必须输出的信息是 。
A.语法错误信息 B.语法规则信息
C.语法分析过程 D.语句序列
42.一个文法是算符优先文法应满足的条件是 。
⑴ 没有形如A→…BC…的产生式(A,B,C∈VN)
⑵ 没有形如A→ε产生式
⑶ 任意两个终结符号之间至多存在一种优先关系
⑷ 没有相同的产生式右部
可选项有:
A.⑴ B.⑴⑵ C.⑴⑵⑶ D.⑴⑵⑶⑷
43.算符优先文法与算符优先函数的关系描述中正确的是 。
A.一个算符优先文法一定存在算符优先函数与之对应
B.一个算符优先文法一定存在多对算符优先函数与之对应
C.一个算符优先文法一定存在有限对算符优先函数与之对应
D.一个算符优先文法可能存在也可能不存在算符优先函数与之对应
44. LL(1)分析法中的“1”的含义是向输入串中查看一个输入符号,其目的是 。
A.确定最左推导
B.确定可归前缀
C.确定分析一步使用的产生式右部匹配串
D.确定是否推导
45.若a为终结符,则A→α • aβ为 项目。
A.移入 B.待约
C.归约 D.接受
46.可归前缀是指 。
A.规范句型的前缀 B.活前缀
C.含有句柄的活前缀 D.句柄
47.下述关于标识符和名字的叙述中,正确的为 。
A.标识符有一定的含义
B.名字有确切的属性
C.名字是一个没有意义的字符序列
D.标识符和名字是等同的
48.下列错误属于静态语义错误的是 。 A.括弧不配对 B.出现非法字符
C.类型不相容 D.溢出
49.属于标识符“种属”属性信息的描述是 。 A.整型 B.变量
C.地址 D.指针
50.不属于标识符“类型”属性信息的描述是 。 A.整型 B.实型
C.指针 D.类型
51.函数表达式sqrt (-8)是错误的,它属于 错误。 A.语法 B.词法
C.静态语义 D.动态语义
52.有一语法制导翻译算法如下: S→bAb { print “1”}
A→(B { print “2”}
A→a { print “3”}
B→aA) { print “4”}
若输如序列为b(a(a(aa)))b,且采用自底向上的分析方法,则输出序列为 。
A.32224441 B.34242421
C.12424243 D.34442212
53.使用 可以把语句翻译成四元式序列。 A.词法规则 B.语法规则
C.语义规则 D.等价变换规则
54.在语法制导翻译中不采用拉链—回填技术的语句是 。 A.转向语句 B.赋值语句
C.条件语句 D.循环语句
55.下面逆波兰式(后缀式)中,能正确表示算术表达式a+b+c+d的是 。 A.abcd+++ B.abc+d++
C.ab+cd++ D.ab+c+d+
二、判断题 (正确打(√)、错误打(×))
1.(√)源程序同目标程序是等价关系。
2.(×)用高级语言编写的源程序都必须通过编译,产生目标程序后才能运行。
3.(×)高级语言程序到低级语言程序的转换是结构上的变换。
4.(×)多遍扫描的编译程序的多遍是指多次重复读源程序。
5.(√)解释程序虽然不产生目标程序,但它可能产生中间代码。
6.(√)DFA同NFA等价。
7.(×)使用正则运算能够描述定义在字母表上的所有符号串集合。
8.(×)一个有限自动机中,有且仅有一个初始状态。
9.(×)一个有限自动机中,有且仅有一个终止状态。
10.(×)有限自动机的作用是实现单词的生成。
11.(√)使用有限自动机可以实现单词的识别。
12.(√)对任一正则表达式e,都存在一个DFA A,使L(e)=L(A)。
13.(√)最小化的DFA,它的状态个数最少。
14.(√)如果一个语言的句子是无穷的,则定义该语言的文法一定是递归的。
15.(×)在编译技术中由于使用前后文无关文法描述程序设计语言,所以程序设计语言是前后文无关语言。
16.(√)一个语言的文法是不惟一的。
17.(×)二义性文法是可以判定的。
18.(×)每个非终结符产生的终结符号串集都是该语言子集。
19.(√)规范归约是最右推导的逆过程。
20.(×)语法分析器可以检查程序中出现的所有错误。
21.(√)一个LL(1)文法一定是无二义性和无回溯文法。
22.(×)一个素短语一定是短语,反之一个短语也是素短语。
23.(√)所有LR分析器的总控程序都是一样的,只是分析表各有不同。
24.(√)类型检查主要指类型相容性检查。
25.(×)一个算符优先文法有且仅有一对优先函数与之对应。
26.(×)单优先方法和LR方法都是按句柄进行归约,所以它们确定句柄的方法相同。
27.(×)二义性文法一定不能应用于语法分析器的设计。
28.(×)运算对象排列的先后顺序,后缀式同中缀式不同。
29.(×)语法制导翻译方法可用来产生各种中间代码,但不能用来产生目标代码。 30.(×)后缀表示法是指把运算对象放在运算符的后面。
因篇幅问题不能全部显示,请点此查看更多更全内容