作业帮 > 数学 > 作业

把赋值语句x:=a+b+c*d翻译成四元式序列

来源:学生作业帮 编辑:作业帮 分类:数学作业 时间:2024/05/29 00:30:01
把赋值语句x:=a+b+c*d翻译成四元式序列
兰式、逆波兰式的目的是一样的,但四元式在表示简单赋值语句方面非常直观明了,四元式的格式:
(操作符,第一操作数,第二操作数,保存结果的变量)
例如:k:=k+1
四元式写成:(+,k,1,k)
如果表达式右边只有单操作数,那就相应位置无值,如:
k:=+1
四元式为:(+,-,1,k)
遇到逻辑条件表达式就要分别给出条件为真时的转移路径和条件为假时的转移路径,如:
if k>1
四元式为:(j>,k,1,?) ,表示条件为真的时候要转移到的地址“?”
(j,-,-,?),表示条件为假时无条件转移到这个地址“?”
“?”表示的地址可以用地址回填的方法确定
假设起始地址是100
begin
100:(+,-,100,k)
101:(+,i,j,t1)
102:(j>,k,t1,104)
103:(j,-,-,106)
104:(-,k,1,k)
105:(j,-,-,102)
106:(*,i,i,t2)
107:(*,j,j,t3)
108:(-,t2,t3,k)
109:(+,-,0,i)
110:(+,-,0,j)
end
再问: 结果呢?