转换C中的所有二进制操作以具有2个操作数

时间:2014-10-03 04:11:08

标签: c parsing operators operands

有没有人知道任何方式(编译器标志/工具)自动更改一段C源代码以将公共算术多操作数操作更改为双操作数操作?

即:

(a = b + c * d - e )  ---becomes-->   
x = c * d  
y = x - e  
a = b + y

1 个答案:

答案 0 :(得分:0)

是。你想要一个program transformation system (PTS)。它们旨在解析代码,应用根据语法定义的代码重排操作,然后使用更改重新生成源代码。他们倾向于使用AST来确保错误解释文本没有问题。

要做到这一点,你已经说服工具选择你的操作数对,计算子表达式的类型,并用适当的类型制作临时变量。它必须能够解析和分析 C ,这很难解析esp。如果包含预处理器条件和宏。没有多少PTS能够做到这一点。实际上没有别的东西可以做到。