OK - that's good enough - I can reproduce from there. I guess I wasn't thinking 
about people importing within imports ;-) I usually just have a master grammar 
that imports everything else.
 
Jim
 
From: Gokulakannan Somasundaram [mailto:[email protected]] 
Sent: Monday, February 01, 2010 9:48 AM
To: Jim Idle
Cc: [email protected]
Subject: Re: [antlr-interest] A bug in C Target Composite grammar
 
OK, i will try to explain, as i am restricted not to share my source. 

Assume the hierarchy is A->B->C->D->E

Now E holds a pointer to A, B, C and D. D holds  a pointer to A, B and C and so 
on.

Now the creation of A happens inside B and creation of B happens inside C and 
so on

Now when creation of B happens, only the pointer of B inside C gets updated. 
But there are pointers to B from inside D and E also. They are not getting 
updated. Now a function call happens through null pointer, the runtime crashes. 
So my code just assigns the pointer to other structures which are above the 
hierarchy of the structure, which created the sub-parser.

Please let me know, if i am unclear in my explanation.

Thanks,
Gokul.


On Mon, Feb 1, 2010 at 9:54 PM, Jim Idle <[email protected]> wrote:
Can you give me an example of what you were fixing? I do not have any 
compilation or runtime bugs that I know of. That does not mean they are not 
there but I need something to test as there are no highlights in this email

Jim

> -----Original Message-----
> From: [email protected] [mailto:antlr-interest-
> [email protected]] On Behalf Of Gokulakannan Somasundaram
> Sent: Monday, February 01, 2010 6:33 AM
> To: [email protected]
> Subject: [antlr-interest] A bug in C Target Composite grammar
>
> 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.
>
> List: http://www.antlr.org/mailman/listinfo/antlr-interest
> Unsubscribe: http://www.antlr.org/mailman/options/antlr-interest/your-
> email-address




List: http://www.antlr.org/mailman/listinfo/antlr-interest
Unsubscribe: 
http://www.antlr.org/mailman/options/antlr-interest/your-email-address
 



List: http://www.antlr.org/mailman/listinfo/antlr-interest
Unsubscribe: 
http://www.antlr.org/mailman/options/antlr-interest/your-email-address

-- 
You received this message because you are subscribed to the Google Groups 
"il-antlr-interest" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/il-antlr-interest?hl=en.

Reply via email to