首页 理论教育 数值计算方法-《编译原理与实践》

数值计算方法-《编译原理与实践》

时间:2023-11-17 理论教育 版权反馈
【摘要】:用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的三地址代码

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈