编译原理期末试题(8套含答案+大题集)(13)
(2) 写出每个产生式对应的语义动作。 答:(1). 适合语法制导翻译的文法(3分) G(S): R? do
U?R S(1) While S?U E (2). (6分) R? do
{ R.QUAD:=NXQ }
U?R S(1) While { U.QUAD:=R.QUAD;
BACKPATCH(S.CHAIN, NXQ) }
S?U E
{ BACKPATCH(E.TC, U.QUAD); S.CHAIN:=E.FC }
答案二:
(1) S ? do M1 S(1) While M2 E
M ?ε (3分)
(2) M ?ε { M.QUAD := NXQ } (6分)
S ? do M1 S(1) While M2 E {
BACKPATCH(S(1).CHAIN, M2.QUAD); BACKPATCH(E.TC, M1.QUAD);
S.CHAIN:=E. FC
七、(8分)将语句
if (A
100 (j<, A, X, 102) 101 (j, -, -, 109) 102 (j>, B, 0, 104)
第41页共6页
}
103 (j, -, -, 109) 104 (j>, C, 0, 106) 105 (j, -, -, 109) 106 (+, C, D, T1) 107 (:=, T1, -, C) 108 (j, -, -, 104) 109
(控制结构3分,其他5分)
八、(10分) 设有基本块如下:
T1:=S+R T2:= 3 T3:= 12/T2 T4:=S/R A:=T1-T4 T5:=S+R B:=T5
T6:=T5*T3 B:=T6
(1)画出DAG图;
(2)设A,B是出基本块后的活跃变量,请给出优化后的四元式序列。
答:(1) DAG如右图:(6分) n7 A n8 T6,B
_ *
n3 T1,T5, B n6 T4
/ +
n2 n1 n4 T2 n5 T3
(2) 四元式序列:(4分) T1:=S+R T4:=S/R A:=T1-T4 B:=T1*4
(1) S ? BB (2) B ? aB (3) B? b
S R 3 4 九、(9分) 设已构造出文法G(S):
第42页共6页
的LR分析表如下
状态 0 1 2 3 4 5 6 7 8 9 ACTION a s3 s6 s3 r3 s6 r2 b s4 s7 s4 r3 s7 r2 # acc r1 r3 r2 S 1 GOTO B 2 5 8 9
假定输入串为abab,请给出LR分析过程(即按照步骤给出状态,符号,输入串的变化过程)。 答:
步骤 状态 符号 输入串 0 0 # abab# 1 03 #a bab# 2 034 #ab ab# 3 038 #aB ab# 4 02 #B ab# 5 026 #Ba b# 6 0267 #Bab # 7 0269 #BaB # 8 025 #BB # 9 01 #S # acc
《编译原理》期末试题(八)
1.(10分)处于/* 和 */之间的串构成注解,注解中间没有*/。画出接受这种注解的DFA的状态转换图。
2.为语言L = {ambn | 0 ? m ? 2n}(即a的个数不超过b的个数的两倍) 写一个LR(1)文法,不准超过6个产生式。(若超过6个产生式,不给分。若所写文法不是LR(1)文法,最多给5分。) 3.(10分)构造下面文法的LL(1)分析表。 D ? TL
T ? int | real L ? id R
R ? , id R | ?
第43页共6页
4.(15分)就下面文法 S ? ( L) | a L ? L ? S | S
? 给出一个语法制导定义,它输出配对括号的个数。 ? 给出一个翻译方案,它输出每个a的嵌套深度。
如句子(a, (a, a) ),第一小题的输出是2,第二小题的输出是1 2 2。 5.(10分)Pascal语言for语句的含义见教材第222页习题7.13。请为该语句设计一种合理的中间代码结构。你可以按第215页图7.17的方式或者第219页图7.19的方式写出你的设计,不需要写产生中间代码的语法制导定义。 6.(5分)一个C语言程序如下:
func(i1,i2,i3) long i1,i2,i3; {
long j1,j2,j3;
printf(\ printf(\}
main() {
long i1,i2,i3; func(i1,i2,i3); }
该程序在某种机器的Linux上的运行结果如下:
Addresses of i1,i2,i3 = 27777775460,27777775464,27777775470 Addresses of j1,j2,j3 = 27777775444,27777775440,27777775434
从上面的结果可以看出,func 函数的3个形式参数的地址依次升高,而3个局部变量的地址依次降低。试说明为什么会有这个区别。 7.(15分)一个C语言程序及其在某种机器linux操作系统上的编译结果如下。根据所生成的汇编程序来解释程序中四个变量的作用域、生存期和置初值方式等方面的区别。
static long aa = 10; short bb = 20;
func() {
第44页共6页
static long cc = 30; short dd = 40; }
.file \ .version \gcc2_compiled.: .data
.align 4
.type aa,@object .size aa,4 aa:
.long 10 .globl bb .align 2
.type bb,@object .size bb,2 bb:
.value 20 .align 4
.type cc.2,@object .size cc.2,4 cc.2:
.long 30 .text
.align 4 .globl func
.type func,@function func:
pushl ?p movl %esp,?p subl $4,%esp
movw $40,-2(?p) .L1:
leave ret .Lfe1:
.size func,.Lfe1-func .ident \(GNU) egcs-2.91.66 19990314/Linux (egcs-1.1.2 release)\ 8.(10分)C语言是一种类型语言,但它不是强类型语言,因为编译时的类型检查不能保证所接受的程序没有运行时的类型错误。例如,编译时的类型检查一般不能保证运行时没有数组越界。请你再举一个这样的例子说明C语言不是强类型
第45页共6页
…… 此处隐藏:929字,全部文档内容请下载后查看。喜欢就下载吧 ……相关推荐:
- [高等教育]公司协助某村精准扶贫工作总结.doc
- [高等教育]高二生物知识点总结(全)
- [高等教育]苏教版数学三年级下册《解决问题的策略
- [高等教育]仪器分析课程学习心得
- [高等教育]2017年五邑大学数学与计算科学学院333
- [高等教育]人教版七年级下册语文第四单元测试题(
- [高等教育]2018年秋七年级英语上册Unit7Howmuchar
- [高等教育]2017年八年级下数学教学工作小结
- [高等教育]湖南省怀化市2019届高三统一模拟考试(
- [高等教育]四年级下册科学_基础训练及答案教材
- [高等教育]城郊煤矿西风井管路伸缩器更换施工安全
- [高等教育]昆八中20182019学年度上学期期末考试
- [高等教育]项目部各类人员任命书
- [高等教育]上市公司经营水务产业的模式
- [高等教育]人教版高二化学第一学期第三章水溶液中
- [高等教育]【中考物理第一轮复习资料】四.压强与
- [高等教育]金坑水电站报废改建工程机电设备更新改
- [高等教育]高中生物教学工作计划简易版
- [高等教育]2017年西华大学攀枝花学院(联合办学)44
- [高等教育]最新整理超短爆笑英文小笑话大全
- 优秀教师继续教育学习心得体会
- 阳历到阴历的转换
- 留守儿童教育案例分析
- 华师17春秋学期《玩教具制作与环境布置
- 测速传感器新型安装装置的现场应用
- 人教版小学数学三年级下册第四单元
- 创业个人意向书
- 山东省潍坊市2012年高考仿真试题(三)
- [恒心][好卷速递]四川省成都外国语学校
- 多少人错把好转反应当成了病情加重处理
- 中外广播电视史复习资料整理
- 江苏省扬州市江都区宜陵镇中学2014-201
- 工程造价专业毕业实习报告
- 广西师范学院心理与教育统计
- aympkrq基于 - asp的博客网站设计与开
- 建筑业外出经营相关流程操作(营改增后
- 人治 德治 法治
- [精华篇]常识判断专项训练题库
- 中国共产党为什么要实行民主集中
- 小学数学第三册第一单元试卷(A、B、C




