[cfe-dev] Creating single AST for multiple files
Deepak Rajendrakumaran
deepak3 at vt.edu
Thu Jan 15 12:51:02 PST 2015
Hello,
I am new to Clang and so I am having some problem figuring out how to
create AST for a program with multiple files .
What I am trying to do:
- In an application containing multiple .cpp/.c and .h files, parse through
all the files and identify all instances of a particular function
-Move the function definition to a new file with a changed name(changed
function name)
-Find all instances where the particular function is called and change the
function name to the new name
(I am ignoring the other dependencies like nested functions/headers etc so
that I can focus on my actual question. So assume this works:))
I have been reading up on Clang/libtooling inorder to figure out a way to
do the same. From what I understand, the steps to do this would be
- Compile and create ASTs for the entire source code(assuming it includes
multiple .cpp and .h files)
-Somehow traverse these ASTs(RecursiveASTVisitor) to figure out where all
this the particular function I am interested in exists(ASTMatchers??)
-First write the function definition to a new file
-Now use the rewriter to write the original file without the function
definition and replace all the places where a call to this function exists
with its new name
(I have tried to simplify the problem statement so that I can pinpoint my
issue better. I'll ofcourse have to manipulate the ASTs and the source code
more to get a working program )
First of all, I need to have ASTs of all TUs and not just one AST. Is there
any way in libtooling to obtain a single AST for multiple TUs? If not is
there any standard practice for the same incase anyone has faced the same
problem?
The one related post I could find in the mailingList is
http://lists.cs.uiuc.edu/pipermail/cfe-dev/2012-August/023865.html. But
That was 2 years ago and the answer at that time was that if I am using
LibTooling, it'll get me disfferent ASTs. Has any been any changes recently
to support creating a single AST?
Also will it be better to look at clang tools rather than libTooling for
this?
Regards,
Deepak
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20150115/79cebac2/attachment.html>
More information about the cfe-dev
mailing list