编译原理参考习题
习题一
1. 一般程序设计语言的定义都涉及( )三个方面。
①语法 ②语义 ③语用 ④程序基本符号的确定
A.①②③ B.①②④ C.①③④ D.②③④
2. 程序语言一般分为( )和( )两大类, 其中( )通常又称为面向机器的语言。
A.高级语言 B.专用程序语言 C.低级语言 D.通用程序语言
3. 面向机器语言指的是( )
A.用于解决机器硬件设计问题的语言 B.特定计算机系统所固有的语言
C.各种计算机系统都通用的语言 D.只能在一台计算机上使用的语言
4. 在使用高级语言编程时, 首先可通过编译程序发现源程序的全部( )错误和部分( )错误。
A.语法 B.语义 C.语用 D.运行
5. 编译程序与具体的机器( ), 与具体的语言( )。
A.有关 B.无关
6. 使用解释程序时, 在程序未执行完的情况下, ( )重新执行已执行的部分。
A.也能 B.不能
7. 编译程序是一种常用的( )软件。
A.应用 B.系统
8. 编写一个计算机高级语言的源程序后, 到正式上机运行之前, 一般要经过( )这几步。
①编辑 ②编译 ③连接 ④运行
A.①②③④ B.①②③ C.①③ D. ①④
9. “用高级语言书写的源程序都必须通过编译, 产生目标代码后才能投入运行。”这种说法( )。
A.不正确 B.正确
10. 编译程序生成的目标程序( )是机器语言的程序。
A.一定 B.不一定
11. 编译程序的工作过程一般可以划分为 等几个基本阶段, 同时还会伴有 和 。
12. 源程序是用高级语言编写的, 目标程序是 , 则其翻译程序称为编译程序。
13. 编译方式与解释方式的根本区别在于 。
14. 编译程序是这样一种程序, 它能够将 转换成与其等价的 。
15. 编译程序而言, 输入数据是 , 输出结果是 。
16. 如果编译程序生成的目标程序是机器代码程序, 则源程序的执行分为两大阶段: 和 。如果编译程序生成的目标程序是汇编语言程序, 则源程序的执行方式分成三个阶段: 、 和 。
17. 解释下列名词:翻译程序、 解释程序、 编译程序、 遍。
18. 常用的编辑器构造工具有哪些?
参考答案
1. A
2. C, A, C
3. B
4. A, B
5. A, A
6. A
7. B
8. B
9. A
10. B
11. 词法分析、 语法分析、 语义分析、 中间代码生成、 代码优化 表格处理 出错处理
12. 机器语言程序或汇编程序
13. 是否生成目标代码
14. 用甲语言书写的程序 用乙语言书写的程序
15. 源程序 目标程序
16. 编译阶段 运行阶段 编译阶段 汇编阶段 运行阶段
17. 翻译程序:把某一种语言程序转换成另一种语言程序的程序。
解释程序:它以该语言写的源程序作为输入, 但不产生目标程序, 而是边解释边执行源程序本身。
编译程序:将高级语言转换为诸如汇编语言或机器语言之类的“低级语言”的翻译程序。
遍:对源程序或源程序的中间表示形式的文件从头到尾扫描一遍, 并做有关的加工处理, 生成新的源程序中间形式或目标程序文件。
习题二
1. 设有文法G[A]:
A→a|b|e|Aa|Ae|A0|A10}0}0}
(1) 试问VT 和VN是由哪些符号组成?
(2) 下列符号串 a, ab0, a0e01, 0a, 11, eee是否为该文法的句子?
2. 设有文法G[N]:
N→ D|ND
D→0|1|2|3|4|5|6|7|8|9
G[N]定义的语言是什么?
3. 给出下面语言相应的文法。
L1={ambn|m, n≥1}
L2={ anbnci |n≥1, i≥0}
L3={ anbncmdm|n≥1, m≥1}
L4={0n|n≥0}
L5={a2n+1 | n≥0}
L6={1n0m1m0n |n, m≥0}
4. 写一个文法, 使其语言的集合是奇数的集合, 且每个奇数不以0开头。
5. 证明下面的文法是二义性的。
S→iSeS | iS | i
6. 设有文法G[E]
E→E+T | E-T | T
T→T*F | T/F | F
F→(E) | i
试证明E+T*F是它的一个句型, 指出这个句型的所有短语、 直接短语和句柄。
7. 下面的文法生成的语言是什么?
G1:S→AB