[cfe-dev] [LLVMdev] Looking for C Parser

Perry Smith pedzsan at gmail.com
Tue Feb 21 15:09:34 PST 2012


On Feb 20, 2012, at 1:24 PM, Eli Friedman wrote:

> On Mon, Feb 20, 2012 at 11:09 AM, Perry Smith <pedzsan at gmail.com> wrote:
>> Hi,
>> 
>> I'm looking for a skeleton C parser.  I've done C parsers before and I know to do a real parse, you need to have a symbol table so that you can keep track of typedefs.
>> 
>> I'm wanting to write a tool that will take existing C source (after the preprocessor) and, for example, tell me when a particular function is called (what source line and from within what function) and tell me the arguments to it.  I don't need a full cross reference.  And, in fact, my particular needs today are just a sample.  I'm looking for a parser that is easy to tie in to.
>> 
>> With the standard Ruby source, there is something called "ripper" which they call an "event-based style parser" (for Ruby).  It has a number of hooks that are called as the source is parsed -- e.g. start of function, start of statement, etc.  This is really easy to tie into.  This is one possibility.  The other possibility is for the parser to give me back a parse tree (or sequence of trees perhaps).
> 
> Using clang's libraries, you can generate a complete AST for C code,
> find all the call expressions, and do whatever analysis of them is
> necessary.  See http://clang.llvm.org/ .  Please direct further
> questions to the cfe-dev mailing list.

Thanks
I hope this is proper netiquette to reply to a new list.

I got clang working.  I put it on my Mac.  I see the -S option and I see that -emit-ast spews out some binary stuff.  I've also found a page describing how to read it back in but I'm assuming that somewhere is a utility to pretty print the AST (or perhaps it is built right into clang).  

Can someone help me with the next step?

Thank you in advance,
Perry





More information about the cfe-dev mailing list