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@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 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 il-antlr-inter...@googlegroups.com. To unsubscribe from this group, send email to il-antlr-interest+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/il-antlr-interest?hl=en.