creating and walking the AST

Hi there,

I have been banging my head against clang for a bit now trying to get a sense of how a few things work. Hence I have a complete beginner type question.

I am simply trying to construct an AST which I can use to do some source transformations.
In trying to work through some of the examples and older tutorials I have noticed that many use a preprocessor instance. With the recent version of clang there seems to be a fundamental difference in the way a preprocessor object is constructed. My first question is can anyone tell me how to reconcile the old methodology with the new. (ie does anyone have a decent example of this.)

The other approach to constructing an AST, it appears, is through the construction of a CompilerInstance. However I have only seen this used in plugin operations or in examples that are not constructing an AST. Are there any good examples of this behavior (operation) in a stand alone application?

Please feel free to correct my misguided notions of what is going on and I apologize for the complete beginner questions.

Hi, Josef

I just went through this process several weeks ago. Those tutorials are too old to suit new revisions of Clang.
Attached is an simple (runnable) program to experiment the uninitialized variables analysis (implemented in tools/clang/lib/Analysis/UninitializedValues.cpp).
Hope this helps.

main.cpp (3.19 KB)

Thanks Guoping,
This looks to be exactly what I need.
Thank you,