布尔表达式及其计算
![](https://i-blog.csdnimg.cn/blog_migrate/929e937ad412a99fb43fb115aed06910.png)
![](https://i-blog.csdnimg.cn/blog_migrate/4efcc59bdb815d26b0e0366f43e3d08e.png)
![](https://i-blog.csdnimg.cn/blog_migrate/52bf0da18009e2d8d717c77aab9a5d5a.png)
按数值表示法翻译
![](https://i-blog.csdnimg.cn/blog_migrate/195f69aaa12ec5770e1bc3843f2014c8.png)
![](https://i-blog.csdnimg.cn/blog_migrate/2a34521dbdb85e818396a3276c4d3876.png)
![](https://i-blog.csdnimg.cn/blog_migrate/c14e22a1f102f9aa9e5f7fe7a9ec0913.png)
![](https://i-blog.csdnimg.cn/blog_migrate/06528701e88dca23ec0beabba684218b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/693c38913f5470c34fc67a9b175ab54f.png)
![](https://i-blog.csdnimg.cn/blog_migrate/8529e24058bf871c841f87cb6c8bc8a2.png)
带优化的翻译
![](https://i-blog.csdnimg.cn/blog_migrate/59f7e3a7d8318973aaee7f2c35729c56.png)
![](https://i-blog.csdnimg.cn/blog_migrate/99729be6f176ef46d3fb9fcfd93cd058.png)
布尔表达式的属性文法
每个表达式都有.true和.false两个继承属性,分别存放着对应的表达式或子表达式为真或者为假的时候要跳转到的目标语句的标号。(与左下角的图一起理解)
根据属性文法翻译布尔表达式![](https://i-blog.csdnimg.cn/blog_migrate/bff331dd00d632c06cc1e6f080f36044.png)
![](https://i-blog.csdnimg.cn/blog_migrate/69af7fb00494259288958749d23763d5.png)
![](https://i-blog.csdnimg.cn/blog_migrate/b4dc669e920ea451312a8e56cc4ff167.png)
一遍扫描实现布尔表达式的翻译![](https://i-blog.csdnimg.cn/blog_migrate/dd75f894f520bc65f96787fa9e8c2763.png)
![](https://i-blog.csdnimg.cn/blog_migrate/882526d72e9fb5e2a186d992c914dac4.png)
![](https://i-blog.csdnimg.cn/blog_migrate/1717ba7e6cc219ee2f21d38e730da5ab.png)
![](https://i-blog.csdnimg.cn/blog_migrate/eb1804a879fe24efb50e443fa6ccd551.png)
![](https://i-blog.csdnimg.cn/blog_migrate/a31abc0e98c7e6e9abcaeb5ddc09af07.png)
![](https://i-blog.csdnimg.cn/blog_migrate/57699ce17a7f65f96a1f877e921b6179.png)
布尔表达式翻译模式
m记录下一个四元式的下标
E1或者E2为真时,跳转的地址一致,就将他们的truelist合并
布尔表达式的翻译示例△△△△△![](https://i-blog.csdnimg.cn/blog_migrate/8296cfa1f9a99e7690edec89e231ab75.png)
![](https://i-blog.csdnimg.cn/blog_migrate/8efbe9ec2360a3323567aabfa1f2e500.png)
小结