[antlr-interest] Antlr3 C Target

Jim Idle jimi at temporal-wave.com
Tue Mar 20 09:18:13 PDT 2007


Actually, I am just working on the examples for the C output, along with
a "How to do X in C" bit too.

I will try to look at your suspected bug - I have not seen anything like
that myself (or I would have fixed it ;-).

Jim

-----Original Message-----
From: antlr-interest-bounces at antlr.org
[mailto:antlr-interest-bounces at antlr.org] On Behalf Of Tobias Pape
Sent: Tuesday, March 20, 2007 5:01 AM
To: antlr-interest at antlr.org
Subject: [antlr-interest] Antlr3 C Target

Hello everyone,

can anyone here provide an example using the C-Target?
There is simply _no_ documentation, sadly.

Currently I try to simply "match" an inputfile against an lexer/parser.

I'm stuck with the following:

Input is:

  Hello = ( blabla

Now I've got an rule (grammar transformed from an antlr2 java project):

// $ANTLR src "SOMclean.g" 320
KeywordOrIdentifier
   : ( Keyword Keyword) => KeywordSelector { $type=KeywordSelector; }
   | ( Keyword )        => Keyword         { $type=Keyword;    }
   | ( Primitive )      => Primitive       { $type=Primitive;  }
   | ( Identifier )     => Identifier      { $type=Identifier; }
   ;

So, it uses an DFA to match it. It does, in fact, match.
but when (found out by tracing the libantlr3c-source) trying to rewind
(aparently this can be interesting to Jim Idle,
  it seems to me, that there's a glitch in
antlr3inputstream.c:antlr3AsciiRewind

-------8<------

    state   = (pANTLR3_LEX_STATE)input->markers->get(input->markers,  
&key);

     /* Seek input pointer to the requested point (note we supply the
void *pointer
      * to whatever is implementing the int stream to seek).
      */
     is->seek(is, ANTLR3_UINT64_CAST(state->nextChar));

------->8------


that is, if theres no marker in the bucket for the key (that was, as it
turned out,
bucket->entries == NULL))
state->nextChar is an invalid reference)


Sorry for the C in here, but I'm a bit confused with all that...

so long,
	-Tobias


More information about the antlr-interest mailing list