编译原理(陈火旺第三版)练习答案(16)
发布时间:2021-06-07
发布时间:2021-06-07
编译原理(陈火旺第三版)练习答案
Else
E.type = real
E.code = E1.code || T.code || inttoreal || +
End if
E→T { E.type = T.type
E.code = T.code}
T→num. num { T.type = real
E.code = num.num }
T→num { T.type = int
E.code = num }
P164-7
S→L1.L2 { S.val = L1.val + L2.val / 2L2.length }
S→L { S.val = L.val } L→L1B { L.val = 2*L1.val + B.c
L.length = L1.length + 1 }
L→B { L.val = B.c
L.length = 1 }
B→0 { B.c = 0} B→1 { B.c = 1}
P165-11
对D,L,T设置综合属性type。过程addtype(id.entry,type)用来将标识符id 的类型type填入到符号表中。 (1) 翻译模式:
D→id L { addtype(id.entry,L.type)}
L→,id L1 { L.type = L1.type ;addtype(id.entry,L1.type)} L→:T { L.type = T.type } T→integer { T.type = integer } T→real { T.type = real }
(2) 假设Ttype为已定义的表示“类型”的数据结构,预测翻译器如下: procedure D; var l_type:Ttype begin
if sym = “id” then begin
advance ; l_type = L ;
addtype(id.entry , l_type) end
else error end;