C/C++ 表达式运算符优先级的括号计算器

Parenthesis calculator for C/C++ expressions operator precedence

将一些经过混淆的 C 代码移植到 C++(即 Harm Geert Muller 的 Fairy-Max 国际象棋引擎)之后,我收到了很多类似于这些的警告:

suggest parentheses around comparison in operand of '&' [-Werror=parentheses]

suggest parentheses around '+' in operand of '&'

虽然关闭警告 不是 一个选项,解决方案是根据 operator precedence.

在表达式中添加括号

例如:

if(z&S&&!ab&K==INF&d>2&v>V&v<Beta){

需要改成这样:

if((z&S) && ((!ab)&(K==INF)&(d>2)&(v>V)&(v<Beta))) {

但手动执行此操作非常耗时。

我尝试使用this反混淆工具,它在内部使用clang-format,但它不会在表达式中添加括号...

问题

是否有工具(最好是在线工具)可以将 C/C++ 表达式作为输入并 return 无警告等效表达式作为输出?

Geordi can do it.

我一直想要一个网络版本,但上次我试图让 Geordi 在我的 VPS 上工作时,由于 Haskell 依赖 gubbins,我惨遭失败。也许有一天再试一次。

同时,您可以 log onto Freenode IRC/msg geordi --precedence *p->data(例如)。您将打开一个私人消息选项卡,其中包含结果(例如 *(p->data))。欢迎继续在该选项卡中发送 --precedence <expression> 请求。