有谁知道有什么方法(编译器标志/工具)可以自动更改一段 C 源代码,将常见的算术多操作数运算更改为双操作数运算吗?
即:
(a = b + c * d - e ) ---becomes-->
x = c * d
y = x - e
a = b + y
最佳答案
是的。你想要一个program transformation system (PTS) 。它们旨在解析代码,应用根据语法定义的代码改组操作,然后通过更改重新生成源代码。他们倾向于使用 AST 来确保不存在误解文本的问题。
为了正确地做到这一点,您必须说服工具为您选择操作数对,计算子表达式的类型,并使用适当的类型创建临时变量。而且它必须能够解析和分析C,尤其是解析起来相当困难。如果您包含预处理器条件和宏。能够做到这一点的 PTS 并不多。实际上没有其他方法可以做到这一点。
关于将 C 中的所有二元运算转换为具有 2 个操作数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26173177/