一. 选择题(2分*10=20分)
注意:请将选择题答案填写到以下选择题答题卡中
题号 1 2 3 4 5 6 7 8 9 10
答案 D B D C D B C A C C
-
编译程序绝大多数时间花在____D_____上 。
A. 词法分析 B. 语法分析
C. 语义分析 D. 表格管理 -
汇编程序是将_____ B__ 翻译成__;编译程序是将________翻译成________。
①高级语言 ②汇编语言 ③机器语言 ④高级语言或汇编语言
⑤汇编语言或机器语言
A.①③①⑤ B. ②③①⑤ C. ④③①③ D. ②③①③ -
给定文法G[A]:
A→bA|cc
下面____D_____是该文法的句子。
A.bcbc B.bcbcc
C.bccbcc D.bbbcc -
已知语言{anbnci | n>=1,i>=0 },则下述文法中,___C___可以产生该语言。
A. S→AB, A→aAb|ab, B→cB|c B. S→aAb, A→aBb, B→cB|c
C.S→AB, A→aAb|ab, B→cB|ε D. S→aSb|A, A→bAc|c -
在通常的语法分析方法中,___D____特别适用于表达式的分析。
A.LR(1)分析法 B. LL(1)分析法
C. 递归下降分析法 D. 算符优先分析法 -
在DFA的最小化过程中,初始应该把集合根据_____ B ____划分子集。
A. 初态和非初态 B. 终态和非终态
C. 是否含有ε出边 D. 是否有出边 -
基本块内的优化为___C____
A.代码外提,删除归纳变量 B.强度削弱,代码外提
C. 删除多余运算,删除无用赋值 D. 循环展开,循环合并 -
若文法G定义的语言是无限集,则文法必然是____A_____。
A. 递归的 B. 二义性的
C. 前后文无关的 D. 无二义性的 -
下列_____C____优化方法不是针对循环优化进行的。
A. 强度削弱 B. 删除归纳变量
C. 删除公共子表达式 D. 代码外提 -
错误的局部化是指_____C_____。
A. 把错误理解成局部的错误
B. 对错误在局部范围内进行纠正
C. 当发现错误时,跳过错误所在的语法单位继续分析下去
D. 当发现错误时立即停止编译,待用户改正错误后再继续编译
二.(7分)编译程序的总体结构、阶段划分、扫描遍的设计对人们进行一个软件系统的设计有什么启发?
答:复杂软件系统可以通过分解为不同的阶段,每个阶段完成一个相对比较简单的功能;能将计算学科一系列方法应用到目标实现当中,自动计算、自动实现也会成为可能。
三.(7分)请简单描述LR分析的优缺点。
优点:比递归下降、LL(1)、算符优先分析法的限制少,大多数用无二义的上下文无关文法描述的语言都可以用LR分析器予以识别,速度快,能准确及时地指出输入串的任何语法错误及出错位置
缺点:若用手工构造分析器工作量大
四.(10分)编译器的工作过程和遍。
1. 一个编译过程可分为一遍、两遍或多遍完成。请简要的描述多遍完成的编译程序的优点,缺点。
2. 描述一般的编译程序可分为哪些阶段,每个阶段的目的是什么?不同阶段是如何连接在一起的?每个阶段的输入和输出分别是什么?
1.优点:更好的代码生成、更优的代码、更高效的代码、支持更多的源语言可能性(某些语言需要多遍生成,如包含function声明的语言,而function的定义在声明之后)等
缺点:更长的编译时间、更多的内存需求等
2.
词法分析:输入-语言的源程序,输出-单词序列
语法分析:输入-单词序列,输出-抽象语法树
语义分析:输入-抽象语法树,输出-抽象语法树
中间代码生成:输入-抽象语法树,输出-中间代码
优化:输入-中间代码,输出-优化后的中间代码
目标代码生成:输入-中间代码,输出-目标代码(可能是汇编语言)
五.(10分)正规语言和自动机理论
考虑语言L={w | w∈(0,1)+, 并且w中包含两个连续的0,即"00",而且w以"1"结尾}。
1. 请写出该语言L的正规式。
2. 请根据你写出的正规式,画出与之相对应的NFA。
1.(0|1)* 00 (0|1)* 1
2.
六.(10分)形式语言分类
请判断下列产生式集所对应的文法属于0-3型文法的那一类,请说明理由。
1. S→aSBC 2. S→ACaB 3. S→Ac 4. S→aS
S→aBC Ca→aaC S→Sc S→aA
CB→DB CB→DB A→ab A→bA
DB→DC CB→E A→aAb A→bB
DC→BC aD→Da B→cB
aB→ab AD→AC B→c
bB→bb aE→Ea
bC→bc AE→ε
cC→cc
1.1型文法
2.0型文法
3.2型文法
4.3型文法
七.(12分)设文法G[S] 的产生式集如下:
S→aAa | bAb | e | c | t
A→SS
(1)试给出句子a c b e t b a的最右推导过程以及语法树;
(2)指出此句型的所有短语、直接短语、句柄和素短语和最左素短语。
(1)
S=>aAa=>aSSa=>aSbAba=>aSbSSba=>aSbStba=>aSbetba=>acbetba
(2)
短语: e c t et betb cbetb acbetba
直接短语: e c t
句柄: c
素短语: c e t
最左素短语: c
八. (14分)设语言L是由奇数个m和偶数(可以是0)个t组成的符号串之集。
(1) 构造识别L的最简DFA;(2) 给出定义L的正规文法。
1. 见图:
2.
S→mB|tC
D→mC|tB
B→mS|tD|ε
C→mD|tS
九.(10分)对于基本块P:
T0=3.14
T1=2T0
T2=R+r
A=T1T2
B=A
T3=2T0
T4=Rr
T5=T3T4
T6=R-r
B=T5T6
(1)用DAG图对基本块P进行优化;
(2)假定出基本块后只有A、B是活跃的,写出优化后的四元式序列。
(1)
(2) T2=R+r
A=6.28T2
T4=Rr
T5=6.28T4
T6=R-r
B=T5T