[antlr-interest] [C Target] Multiple return parameters rule	generation error.
    Garry Iglesias 
    garry.iglesias at gmail.com
       
    Mon Aug  4 10:05:26 PDT 2008
    
    
  
Hi,
Sorry, I've already been reporting this... But it seems it's still there. So
I 'remind it' because it's important as a standard feature
of ANTLR (multiple returning parameters) that doesn't work for the C target.
I got a rule with return parameters :
myProblemRule returns [int i,int bIsRef]
   :  [...]
   ;
 myNoProblemRule returns [int i]
   :  [...]
   ;
When I use it :
myOtherRule
    :  [...]  good=myNoProblemRule  bad=myProblemRule
       {
             int ivar=$good.i;        -> This works...
             ivar=$bad.i;              -> This generates code that doesn't
compile...
             if ($bad.bIsRef)  {      -> This generates code that doesn't
compile...
             }
       }
    ;
Note "myBool" is just a typedef from an int...
So the fact is that ANTLR converts the 'if' into something like :
if (( result != NULL ? result.bIsRef : NULL )) {  [...]  }
Problem is that result is a local instantiated structure, and not a pointer
to a structure.
By the way, ANTLR is a very good tool.
Thanks.
Garry.
PS/ Sorry if my english is wrong as I'm french native.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.antlr.org/pipermail/antlr-interest/attachments/20080804/4986b288/attachment.html 
    
    
More information about the antlr-interest
mailing list