产生式:S → id = E; 语义规则:S.code = E.code || gen(id.place’:=’E.place),对其消除左递归,提取左因子
时间: 2024-04-01 20:33:33 浏览: 90
产生式 S → id = E; 可以进行左递归消除和左因子提取,得到以下结果:
S → id S'
S' → = E;
接下来,我们来看一下语义规则:
S.code = E.code || gen(id.place’:=’E.place)
这个语义规则的意思是:当执行到产生式 S → id = E; 时,先执行 E 的语义动作 E.code,然后再执行将 E.place 赋值给 id.place' 的代码 gen(id.place’:=’E.place)。其中,id.place' 是 id 符号的一个新属性。
这个语义规则的作用是将 E 的计算结果赋值给 id 符号的属性 id.place',并且在生成目标代码时生成对应的赋值语句。
阅读全文