[LLVMdev] Looking for C Parser

Eli Friedman eli.friedman at gmail.com
Mon Feb 20 11:24:28 PST 2012


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.

-Eli




More information about the llvm-dev mailing list