[LLVMdev] Looking for C Parser

Perry Smith pedzsan at gmail.com
Mon Feb 20 11:09:02 PST 2012


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).

I'm willing to use most any language but assumed it would be C based.  I'm comfortable using Ruby, Python, Perl, etc if necessary.  I can also work with YACC / Bison if necessary.

I'm hoping this project would have either exactly what I'm looking for or major pieces to help me build what I'm looking for.

Thank you for your time,

More information about the llvm-dev mailing list