[antlr-interest] Re: Please Help: Simple C Parsing Problem
thrutchy
eric_mahurin at yahoo.com
Sun Jul 25 12:10:47 PDT 2004
If you look a few messages back, you will find a lexer I wrote that
handles the major cpp directives (#include, #define, #ifdef, etc).
Unfortunately, it is not well tested and probably doesn't follow the
cpp spec to a T. You are welcome to try and integrate this with
Monty's C lexer, so that there is no extra pass to go through.
Eric
--- In antlr-interest at yahoogroups.com, "JonFroehlich" <jfroehli at i...>
wrote:
> Ack, I was afraid of that. I wonder if there are any other
> approaches/altneratives I may pursue.
>
> Basically what I am trying to do is parse C code (or C++ code, but
> let's stick with C for now) and create, for example, a tree-explorer
> view of the code like one might find in an IDE. The explorer view
> would list the .c "global" declarations for each file as well as its
> functions. This is only one example of what I plan to do, but I
> think it illustrates my main motivation -- nothing too complicated
> here (at least I don't think so).
>
> I use Terence Parr's "Java parser and tree parser" to support Java
> parsing for exactly this same functionality and it seems to work
> great.
>
> Any feedback would be much appreciated!
>
> Thanks for the responses so far,
>
> j
>
> --- In antlr-interest at yahoogroups.com, Monty Zukowski <monty at c...>
> wrote:
> > Exactly.
> >
> > Monty
> >
> > On Jul 25, 2004, at 3:08 AM, lgcraymer wrote:
> >
> > > Monty will probably have something to say, but if I remember
> > > correctly, the GNU C grammar has no preprocessor support. You
> need to
> > > run cpp over the input file before sending it through the C
> processor.
> > >
> > > --Loring
> > >
> > >
> > > --- In antlr-interest at yahoogroups.com, "JonFroehlich"
> <jfroehli at i...>
> > > wrote:
> > >> I'm using the John Mitchell and Monty Zukowski GNU C Grammar
> from
> > >> antlr.org. I can run the test input .c files fine; however,
> when I
> > >> create my own simple tests, the parser fails.
> > >>
> > >> For example, testfile.c contains two lines
> > >>
> > >> #include <stdio.h>
> > >> FILE *filePtr;
> > >>
> > >> When I parse this, I get the following error:
> > >>
> > >> ANTLR Parsing Error: line 2:26: unexpected token: * token
> name:STAR
> > >> line 2:26: unexpected token: *
> > >> at GnuCParser.initDecl(GnuCParser.java:3454)
> > >> at GnuCParser.initDeclList(GnuCParser.java:1107)
> > >> at GnuCParser.typelessDeclaration(GnuCParser.java:832)
> > >> at GnuCParser.externalDef(GnuCParser.java:496)
> > >> at GnuCParser.externalList(GnuCParser.java:233)
> > >> at GnuCParser.translationUnit(GnuCParser.java:193)
> > >> at Test.main(Test.java:55)
> > >>
> > >>
> > >> So, I realize the issue revolves around the notion of "typeless
> > >> declaration." E.g. if we change testfile.c to read the
> following,
> > >> there is no problem.
> > >>
> > >> #include <stdio.h>
> > >> int *filePtr;
> > >>
> > >> How do I change the grammar file (if this is even necessary) to
> be
> > >> able to detect new types so that a non-primitive type variable
> > >> declaration, like FILE, is treated the same way as an int
> > >> declaration. This seems like such an easy thing but
> unfortunately I
> > >> can't figure it out.
> > >>
> > >> j
> > >
> > >
> > >
> > >
> > > Yahoo! Groups Links
> > >
> > >
> > >
> > >
> > >
> > >
> > >
Yahoo! Groups Links
<*> To visit your group on the web, go to:
http://groups.yahoo.com/group/antlr-interest/
<*> To unsubscribe from this group, send an email to:
antlr-interest-unsubscribe at yahoogroups.com
<*> Your use of Yahoo! Groups is subject to:
http://docs.yahoo.com/info/terms/
More information about the antlr-interest
mailing list