《编译原理》课后习题答案第八章
问题 12:
写出说明语句中的名字和类型及相对地址的翻译模式,以允许在形如 D?id : T 的说明
中可用一串名字表来代替单个名字。
答案:
产生式 P? D D?D;D D?id L L?id , L1 动作 {offset := 0} {enter(id.name , L.type , offset) offset := offset + L.width} {L.type := L1.type L.width := L1.width enter(id.name , L1.type , offset) offset := offset + L1.width } {L.type := T.type L.width := T.width} {T.type := integer T.width := 4} {T.type := real T.width := 8} {T.type:=array(num.val , T1.Type T.width := num.val * T1.Width) {T.type := pointer(T1.type) T.width := 4} L?:T T?integer T?real T?array [num] of T1 T?^T1
盛威网(www.snwei.com)专业的计算机学习网站 21
《编译原理》课后习题答案第八章
问题 13:
(浙江大学 1997 年)在一个移入-归约的分析中采用以下的语法制导的翻 译模式,在按一产生式归约时,立即执行括号中的动作。
A→aB {print “0”;} A→c {print “1”;} B→Ab {print “2”} 当分析器的输入为 aacbb 时,打印的字符串是什么? 答案: 分析器的分析过程如下图所
示:
由于分析器采用移入-归约的方式进行分析,符号串 aacbb 的分析过程将如
图中所标的归约顺序进行,而在按一产生式归约时,立即执行括号中的动作,所 以分析器打印的字符为 12020。
盛威网(www.snwei.com)专业的计算机学习网站 22