2016-06-14 13 views

ответ

2

TraverseDecl сообщает ASTConsumer библиотеки интерфейсов, чтобы рекурсивно просматривать декларации из AST. Затем вызывается VisitDecl, где вы можете извлечь соответствующую информацию.

следующие две ссылки для получения более подробной информации и простой пример клетчатой:

http://clang.llvm.org/docs/RAVFrontendAction.html

How to traverse clang AST manually ?

+0

Есть ли разница в использовании TraverseDecl или VisitDecl в ASTVisitor хотя. В этом примере TraverseDecl используется в ASTConsumer и VisitDecl в ASTVisitor. Однако другая ссылка stackoverflow имеет TraverseDecl внутри самого ASTVisitor. –

+0

[RecursiveASTVisiter] (http://clang.llvm.org/doxygen/classclang_1_1RecursiveASTVisitor.html) Если вы посмотрите на подробное описание в ссылке: вы увидите, что traverseDecl будет находиться в верхнем ярусе, чем visitDecl. Поэтому, если это зависит от меня, я буду следовать примеру [Clang Plugin] (http://clang.llvm.org/docs/RAVFrontendAction.html), поскольку он поддерживает эту иерархию и более понятен. –

+0

Это означает использовать Traverse внутри ASTConsumer и Visits внутри ASTVisitor? Mhmm. –