【摘要】:用1表示真,用0表示假,按照从左到右依次求值的顺序来实现布尔表达式的翻译。表6-13布尔表达式数值计算法的翻译模式例6.6 根据表6-13可将表达式a<b or c<d and e<f翻译为图6-16中的三地址代码序列。
用1表示真,用0表示假,按照从左到右依次求值的顺序来实现布尔表达式的翻译。例如,布尔表达式1 or(not 0 and 0)or 0可按如下的过程进行计算:
1 or(not 0 and 0)or 0
=1 or(1 and 0)or 0
=1 or 0 or 0
=1 or 0
=1
再如,布尔表达式a or b and not c可被翻译成如下的三地址代码序列:
T1:=not c
T2:=b and T1
T3:=a or T2
并且,对于形如a<b的关系表达式,可等价地写成if a<b then 1 else 0,因此,可将它翻译成如下的三地址代码序列(假定语句序号从100开始):
100:if a<b goto 103(www.xing528.com)
101:T:=0
102:goto 104
103:T:=1
104:
表6-13给出了将布尔表达式翻译为三地址代码的翻译模式,其中,过程emit用来将三地址代码送到输出文件中,nextstat给出输出代码序列中下一条三地址语句的地址索引,每产生一条三地址语句后,emit将把nextstat加1。
表6-13 布尔表达式数值计算法的翻译模式
例6.6 根据表6-13可将表达式a<b or c<d and e<f翻译为图6-16中的三地址代码序列。
图6-16 布尔表达式a<b or c<d and e<f的三地址代码
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。