将 C 中的所有二元运算转换为具有 2 个操作数

标签 c parsing operators operands

有谁知道有什么方法(编译器标志/工具)可以自动更改一段 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/

相关文章:

c - Rcpp 如何在Rcpp中生成随机多元法 vector ?

windows - 如何在批处理文件中用空格分隔嵌入空格的双引号字符串?

c# - 重载 +/- 一元运算符

C++ 和++ 运算符

c++ - 使用 C 中系统调用的文件描述符

c - 获取字符串直到第一个数字

C - 实现将许多元素快速推送到数组末尾

parsing - 在 f# 中读取制表符分隔的文件

android - Android 版 Mp4Parser

mysql - MySQL中的 "<=>"是什么意思?