XX 大学软件学院 2017 年 1 月编译原理考试题
一(30 分)
1. 画出程序设计总框图(5 分)
2. 写一个文法满足 r = (a^m)(b^n), 且 n<=m<=2n (5 分)
3. 语法分析有哪些方法,特点是什么 (5 分)
4. 属性文法是什么,L 属性文法和 S 属性文法?(5 分)
5. 写出 A+(B-C)+E/(C-D) ^N 的四元式,三元式,间接三元式,后
缀式。
6. 参数传递,给一段代码,写出输出结果
按值传递,按地址传递,按名传递(5 分)
二(15 分)
正则式 r = ( (0|1) | 11) * 构造相应的 DFA。(15 分)
三(20 分)
文法 G: S-> B | B^B | B 析取 B | (B)| i
证明该文法的二义性,并写出 LR 分析表(20 分)
四(15 分)
采用 LR 分析,写出:
while ( a < b) and (c < d)
if a < c then x:= x+1
else x:= x+2
的语法指导翻译过程(15 分)
五(20 分)
T1 = 2
T2 = T1*2 T3 = T4 = T5 =
T6 = T7= T8= T9 =
L =
画出 DAG 图。如果只有 L 在基本块后可用,优化中间代码。
重排序节点并写出目标代码。