(2021级大数据,编译原理必修,老师是shl,讲课一言难尽。因为这门课刚从限选改为必修没多久,所以题型变化挺大,我们这级基本还是在试水。。。另外推荐国防科大的编译原理网课,讲的很好,但是这个网课不适合考前突击)
一、判断题(5*2分)
1、正则文法可以表示一般的高级程序语言,构成其语法成分和生成句子(×)
2、NFA的状态和符号有且只有一条边,因此看起来更直观(×)
3、DFA无法表示这样的语言{
a
n
b
n
,
n
>
=
1
a^nb^n,n>=1
anbn,n>=1}(√)
4、语义分析通常和语法分析同时进行(√)
5、中间表示中的无用代码通常是由于代码优化过程中某些转换产生的(√)
二、名词解释(5*4分)
1、推导和规约。
2、LL和LR文法中的大写字母。
3、继承属性和综合属性。
4、公共子表达式。
5、归纳变量和强度削弱。
三、简答题(3*5+8分)
1、什么是编译,编译的前端和后端通常包含哪些部分?
2、给出上下文无关文法详细的阐述,并给出下面的语言的文法:{
a
n
b
c
n
,
n
>
=
0
a^nbc^n,n>=0
anbcn,n>=0}
3、简述回填算法的主要思想。
4、什么是预测分析,说明其主要步骤。
四、计算题(8分)
( 0 ∣ 1 ) ∗ 01 (0|1)*01 (0∣1)∗01,构造其NFA,并确定化、最小化。
五、语法分析题(15分)
E->TE'
E'->+TE'|ɛ
T->FT'
T'->*FT'|ɛ
F->(E)|id
(1)构造所有非终结符的FIRST和FOLLOW,并证明这是一个LL(1)文法。
(2)构造SELECT集合并给出预测分析表。
六、语义分析题(8分)
L->E
E->E1+T
E->T
T->T1*F
T->F
F->(E)
F->digit
为上述产生式添加语义规则,使其能够实现数字的加乘运算。
七、综合题(16分)
1)i = 1
2)j = 1
3)t1 = 10 * i
4)t2 = t1 + j
5)t3 = 8 * t2
6)t4 = t3 - 88
7)a[t4] = 0.0
8)j = j + 1
9)if j <= 10 goto (3)
10)i = i + 1
11)if i <= 10 goto (2)
12)i = 1
13)t5 = i-1
14)t6 = 88 * t5
15)a[t6] = 1.0
16)i = i + 1
17)if i <= 10 goto (13)
(考试题的三地址代码出的有问题,我这里找的PPT上的一个例子)
(1)划分基本块并给出流图。
(2)使用三种以上优化方法对其进行优化。
(3)在代码生成时,如果运算分量在内存中,并且所有寄存器都被占用时,该怎么办。