Как удалить IfStmt с помощью clangs Rewriter, когда if только окружает один оператор, который решается с помощью препроцессора if. - PullRequest
0 голосов
/ 26 мая 2018

Во время написания моей диссертации мне нужно было удалить IfStmt в файле C ++ с помощью clang Rewriter.

Я использую clang и его AST, потому что мне нужен AST, чтобы найти правильное местоположение.Для удаления я использую метод getSourceRange конструкции if, а затем удаляю его соответствующим методом Rewriter.

Но после этого я получил синтаксическую ошибку в измененном файле C ++.

if выглядит следующим образом:

if( someCondition )
#if SOMEOTHERCONDITION
doSth1();
#else
doSth2();
#endif

После удаления была удалена часть if конструкции препроцессора, а остальная часть осталась.

Есть ли какой-либо общий способбороться с такой проблемой?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...