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 在我的 VPS 上工作时,由于 Haskell 依赖 gubbins,我惨遭失败。也许有一天再试一次。
同时,您可以 log onto Freenode IRC 和 /msg geordi --precedence *p->data
(例如)。您将打开一个私人消息选项卡,其中包含结果(例如 *(p->data)
)。欢迎继续在该选项卡中发送 --precedence <expression>
请求。
将一些经过混淆的 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 在我的 VPS 上工作时,由于 Haskell 依赖 gubbins,我惨遭失败。也许有一天再试一次。
同时,您可以 log onto Freenode IRC 和 /msg geordi --precedence *p->data
(例如)。您将打开一个私人消息选项卡,其中包含结果(例如 *(p->data)
)。欢迎继续在该选项卡中发送 --precedence <expression>
请求。