[antlr-interest] ANTLR v3.4 generates compiler errors (that v3.3 doesn't generate)

Pedro Francisco pedrogfrancisco at gmail.com
Mon Apr 30 10:05:33 PDT 2012


Sorry for the poke but... any news on this? (getting "void  =null;")...

On Mon, Oct 24, 2011 at 8:24 PM, Eric <researcher0x00 at gmail.com> wrote:
> On Mon, Oct 24, 2011 at 10:41 AM, Dieter Habelitz <
> dieter.habelitz at habelitz.com> wrote:
>
>> Hi folks,
>>
>> When feeding ANTLR 3.4 with my Java grammars it doesn't generate valid
>> Java sources (26 compiler errors) - with v3.3 everything is okay.
>>
>> Here's a snipped of the grammar that raises one of the problems:
>>
>> statement
>>   :   block
>>   |   assertStatement
>>   |   ifStatement
>>   |   forStatement
>>   |    [... and so on ...]
>>   ;
>>
>> ifStatement
>>        : IF parenthesizedExpression ifStat=statement
>>       (   ELSE elseStat=statement -> ^(IF parenthesizedExpression $ifStat
>> $elseStat)
>>       |                           -> ^(IF parenthesizedExpression $ifStat)
>>       )
>>        ;
>>
>> Amongst other things v3.4 generates the following code for the 'ELSE'
>> branch
>> of the rule 'ifStatement' (have a look at the local 'variable
>> declaration': void  =null;):
>>
>>   public final void synpred137_Java_fragment() throws RecognitionException
>> {
>>       void  =null;
>>
>>       // [... some comments not relevant here ...]
>>       {
>>       match(input,ELSE,FOLLOW_ELSE_in_synpred137_Java9244); if
>> (state.failed) return ;
>>
>>       pushFollow(FOLLOW_statement_in_synpred137_Java9248);
>>       elseStat=statement();
>>
>>       state._fsp--;
>>       if (state.failed) return ;
>>
>>       }
>>
>>   }
>>
>> However, v3.3 generates the following code from the same grammar:
>>
>>   public final void synpred137_Java_fragment() throws RecognitionException
>> {
>>       JavaParser.statement_return elseStat = null;
>>
>>
>>       // [... some comments not relevant here ...]
>>       {
>>       match(input,ELSE,FOLLOW_ELSE_in_synpred137_Java9244); if
>> (state.failed) return ;
>>       pushFollow(FOLLOW_statement_in_synpred137_Java9248);
>>       elseStat=statement();
>>
>>       state._fsp--;
>>       if (state.failed) return ;
>>
>>       }
>>   }
>>
>> The complete grammars can be found at ...
>>
>> http://www.habelitz.com/index.php?option=com_content&task=view&id=12&Itemid=8
>>
>> Any hints? Switch back to org.antlr.Tool 3.3
>
>
>
>
>> A bug within v3.4? Yes
>>
>
> Ter is aware of it but is holding off on fixing the bugs for org.antlr.Tool
> 3.4.
>
>
>>


More information about the antlr-interest mailing list