1

我有以下语法的表达式:

exp := cons | 
       var | 
       exp binop exp | 
       unop exp

其中 binop 是像 plus 这样的二元运算符,而 unop 是像负数这样的一元运算符。我想将它们转换为三地址代码形式。

例如:表达式3 + a * 7 * (3 + (~4))将是:

__var_1 = ~ 4;
__var_2 = 3 + __var_1;
__var_3 = 7 * __var_2;
__var_4 = a * __var_3;
__var_5 = 3 + __var_4;

语言无关紧要,只有算法对我来说很重要。

4

0 回答 0