Using Clang for a C Refactoring Tool

I'm currently an student doing a project which involves creating a
program capable of representing a C project (files, functions...etc)
visually and which will allow the user to perform simple higher as
well as lower-level refactorings via the graphical interface itself. I
originally intended to use the GCC translation framework available
with ANTLR for the job of parsing the C files and source code in but
someone else recommended that I perhaps consider Clang instead.

I was wondering if I could get some feedback as to whether Clang would
be well suited for a project of this nature. Ideally the parser would
be able to handle preprocessing, be able to read in different C files
as a single project and perform code transformations with ease. It
would also be much appreciated if you could perhaps help point me to
other standalone projects or examples which maybe use Clang in this
manner. Thanks alot in advance.

I'm currently an student doing a project which involves creating a
program capable of representing a C project (files, functions...etc)
visually and which will allow the user to perform simple higher as
well as lower-level refactorings via the graphical interface itself.

Sounds cool.

I originally intended to use the GCC translation framework available
with ANTLR for the job of parsing the C files and source code in but
someone else recommended that I perhaps consider Clang instead.

llvm actually targets keeping enough information around so that refactoring is possible and easy to do. There is enough beef in there to handle comments, whitespacing, macros and so on. Additionally, I suspect we'd welcome code to do more in this area into the tree. I think clang would be a good place to do this.

Also, because clang (and llvm) is built and designed as a set of useful libraries for solving all sorts of problem, if there is a rough area where the design could be improved to meet your specific needs, I think we are interested in have that flexibility in clang.