source traversing with clang......

Hi,
I want to traverse source code of “C” language.
i want to extract all the “for loops” in given C file. After extraction loop body i want to visit its body statements.
then i want to extract all the functions one by one in the given source file.

i want to do these using clang.
what will be better? writing clang-plugin or separate program like whole program analysis?
i may need to visit each and every statement of the function.

how can i write AST walker that can walk through all the node?
is there any sub type walker for loops and functions only(means that will visit only loops of functions)?

You probably want the RecursiveASTVisitor. I think the best docs for
it are the comments at the top of the header file. Someone should
turn that into a quick little HTML doc, but it's been too long since I
used it to be useful with it.

Reid

Hi,
I want to traverse source code of "C" language.
i want to extract all the "for loops" in given C file. After extraction loop body i want to visit its body statements.
then i want to extract all the functions one by one in the given source file.

i want to do these using clang.
what will be better? writing clang-plugin or separate program like whole program analysis?
i may need to visit each and every statement of the function.

It's easier to write a clang-plugin or add a new action based on the -fsyntax-only action.

how can i write AST walker that can walk through all the node?
is there any sub type walker for loops and functions only(means that will visit only loops of functions)?

As suggested by Reid, RecursiveASTVisitor is your best bet.

  - Doug

Douglas Gregor <dgregor-2kanFRK1NckAvxtiuMwx3w@public.gmane.org> writes:

Yes. Or if someone were to make it easy to build an plugin that let is drop new ASTConsumers into a compilation job, that would make this kind of extension really easy.

  - Doug