Калькулятор скобок для приоритета оператора выражений C / C ++ - PullRequest
2 голосов
/ 03 июня 2019

После переноса некоторого запутанного кода C в C ++ (а именно, Fairy-Max шахматный движок Харма Гирта Мюллера), я получаю множество предупреждений, подобных этим:

предложить скобки вокруг сравнения в операнде '&' [-Werror = круглые скобки]

предложить скобки вокруг «+» в операнде «&»

Хотя отключение предупреждений является , а не вариантом, решение заключается в добавлении скобок в выражениях в соответствии с приоритетом оператора .

Например:

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

необходимо преобразовать в это:

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

Но делать это вручную довольно долго.

Я пытался использовать этот инструмент для деобфускации, который использует clang-format внутри, но не добавляет скобки в выражения ...

Вопрос

Существует ли инструмент (предпочтительно онлайн), который может принимать выражение C / C ++ в качестве входных данных и возвращать эквивалентное выражение без предупреждений в качестве выходных данных?

1 Ответ

2 голосов
/ 05 июня 2019

Geordi может сделать это .

Я давно хотел веб-версию, но в прошлый раз, когда я пытался заставить Geordi работать над моим VPS, я потерпел неудачу из-за проблемных зависимостей Haskell.Может дать ему еще один шанс.

Между тем, вы можете войти на Freenode IRC и /msg geordi --precedence *p->data (например).Вы получите открытую вкладку с личным сообщением с результатом (например, *(p->data)).Не стесняйтесь отправлять --precedence <expression> запросов в этой вкладке.

Screenshot of tool used on your case

...