[antlr-interest] A bug in C Target Composite grammar

Gokulakannan Somasundaram gokul007 at gmail.com
Mon Feb 1 06:32:44 PST 2010


Hi,
   I found and fixed a runtime bug for C Target w.r.t composite grammar.
Please do the necessary.

I am copy-pasting the C.stg file lines, that i changed.

<if(grammar.directDelegates)>
    // Initialize the parsers that we are going to delegate some
    // functions to.
    //
    <grammar.directDelegates:
      {g|ctx-><g:delegateName()> = <g.recognizerName>NewSSD(instream,
PSRSTATE<grammar.delegators:{g|, <g:delegateName()>}>, ctx);};
separator="\n">
<endif>
<if(grammar.delegators)>
    // Install the pointers back to parsers that will delegate us to perform
certain functions
    // for them.
    //
    <grammar.delegators:
         {g|ctx-><g:delegateName()>            = <g:delegateName()>;};
separator="\n">

 <if(grammar.directDelegates)>
    <grammar.directDelegates:
     {g1|
<grammar.delegators:{g2|ctx-><g2:delegateName()>-><g1:delegateName()>    =
ctx-><g1:delegateName()>;}; separator="\n"> };
     separator="\n">
 <endif>

<endif>

The first highlighted portion fixed a compile time bug and the second
portion fixed the runtime bug. I could see similar lines for lexer also. But
i didn't change them. Please take care of this.

Thanks,
Gokul.


More information about the antlr-interest mailing list