В чем разница между обходом AST курсорами и узлами - PullRequest
0 голосов
/ 28 июня 2019

Я играю с libclang для разбора небольших файлов C ++.Я видел примеры о том, как разобрать деревья AST.

Как я понял, AST состоит из ASTNodes , который имеет тип Decl или Stmt .Для обхода дерева я могу использовать ASTConsumer, который посещает ASTNodes или CxCursors .

В чем разница между этими двумя методами обхода?

1 Ответ

1 голос
/ 28 июня 2019

Оба являются частью одного и того же метода обхода AST, так как курсоры являются указателями на узлы AST. Если вы ищете другой метод обхода AST, вы должны посмотреть на соответствия AST. С помощью этого метода вы определяете модель AST, которую вы хотите сопоставить с AST исходного файла. Это может быть мощный метод.

Вот введение в сопоставление с Clang: https://clang.llvm.org/docs/LibASTMatchers.html

...