我有以下语法的表达式:
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;
语言无关紧要,只有算法对我来说很重要。