[LLVMdev] Looking for C Parser
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:
> 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.
More information about the llvm-dev