Каковы различия между Clang AST Matcher и AST Visitor? - PullRequest
0 голосов
/ 03 октября 2019

Два мощных способа открыть ящик Clang. Что следует учитывать при принятии решения об использовании одного над другим?

На веб-сайте Clang есть несколько старых обучающих программ , посвященных использованию RecursiveASTVisitor для поиска Decl узла AST, а такженовый учебник о том, как использовать ASTMatcher, чтобы найти for stmt. В этом контексте многое совпадает с тем, чего они могут достичь.

Для простых задач, как упомянуто выше, я считаю ASTMatcher более удобным, поскольку используемый предикат является коротким и легко читаемым. Однако для более сложных задач, таких как преобразования источника в источник, где требуется анализ для всей единицы перевода. Реализация функций посетителя кажется лучшим подходом. Потому что предикаты в моем ASTMatcher имеют тенденцию становиться длинными и трудными для понимания. Может быть, есть эффективный способ использования ASTMatcher с lang и сложными предикатами. Я ценю любые советы по этому вопросу. Поскольку ASTMatcher был представлен позже, намеревается ли он заменить старый метод AST Visitor?

...