山东大学软件学院2021级编译原理回忆版

(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)在代码生成时,如果运算分量在内存中,并且所有寄存器都被占用时,该怎么办。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>