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

Sean Silva silvas at purdue.edu
Wed Feb 22 08:04:20 PST 2012

Try writing a Clang plugin. There's an example plugin that prints all
function names in examples/PrintFunctionNames.

You will want to be familiar with what Clang's AST looks like. For a view
of the inheritance hierarchy for the AST nodes, see here:

btw: Clang's AST hierarchy has two roots, Decl and Stmt (that confused me
at first).

--Sean Silva

On Tue, Feb 21, 2012 at 6:09 PM, Perry Smith <pedzsan at gmail.com> wrote:

> 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
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20120222/93bc89fe/attachment.html>

More information about the cfe-dev mailing list