[antlr-interest] bugs

Terence Parr parrt at cs.usfca.edu
Thu Oct 27 10:40:28 PDT 2011


ooops. have to back this out. Sam Harwell is fixing differently.
T
On Oct 27, 2011, at 9:55 AM, Terence Parr wrote:

> * Dieter Habelitz reported bug in java code gen with synpreds. labels were
>  being carried from grammar into synpreds but weren't typed properly (they
>  were "void x=null;" for x=ruleref labels)
> 
> Fixed. pushed. grab at http://antlr.org/depot/antlr3/main/tool/target/
> 
> please let me know if it works.
> 
> Ter
> On Oct 24, 2011, at 7:49 AM, Terence Parr wrote:
> 
>> 
>> 
>> Begin forwarded message:
>> 
>>> From: Dieter Habelitz 
>>> Subject: [antlr-interest] ANTLR v3.4 generates compiler errors (that v3.3 doesn't generate)
>>> Date: October 24, 2011 7:41:31 AM PDT
>>> To: antlr-interest at antlr.org
>>> 
>>> 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? A bug within v3.4?
>>> 
>>> Ciao
>>> Dieter
>>> 
>>> 
>>> 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



More information about the antlr-interest mailing list