我的语法有以下语法:
exp := cons |
var |
exp binop exp |
unop exp
其中binop是像plus和unop这样的二元运算符,就像negetive这样的一元运算符。我希望将它们转换为three address code形式。
例如:表达式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;
语言无关紧要,只有算法才对我很重要。