第八章 源程序的中间形式
一般编译程序都生成中间代码,然后再生成目标代码。
优点是:可移植(与具体目标程序无关) 且易于代码优化
8.1 波兰表示
即后缀表示式
![](https://cdn.jsdelivr.net/gh/QingYuAnWayne/PicStorage/20201128161232.png)
由中缀表达式翻译为波兰表示算法较容易实现。构造一个类似算法优先分析法的算法即可。
波兰表示法
优点:
- 在不使用括号的情况下可以无二义地说明算术表达式
- 波兰表示法更容易转换成机器的汇编语言或机器语言。(操作数出现在紧靠操作符的左边,而操作符在波兰表示中的顺序即为进行计算的顺序。)
- 波兰表示不仅能用来作为算术表达式的中间代码形式, 而且也能作为其它语言结构的中间代码形式。
缺点:
- 优化不是十分方便
如:if 语句的波兰表示
![](https://cdn.jsdelivr.net/gh/QingYuAnWayne/PicStorage/20201128161921.png)
:的头一个符号
:一个紧跟在后面的符号
BZ:二目操作符。若expr结果为false,则产生一个的转移
BR:一目操作符。产生一个的转移。