[antlr-interest] Error in produced lexer
Alex Shneyderman
a.shneyderman at gmail.com
Tue May 15 08:34:46 PDT 2007
I am on 3.0b7 of ANTLR and was trying to learn about syntactic
predicates today. So, I have the lexer described as so:
lexer grammar Disambiguation;
@lexer::header {
package antlrlist;
}
FLOATORINT
: (DIGIT+ '.' DIGIT) => DIGIT+ '.' DIGIT+
| DIGIT+
;
fragment DIGIT : '0'..'9';
after I run Tool the lexer gets generated and no errors are reported
but the generated java is not valid. It has method like this:
// $ANTLR start synpred1
public final void synpred1_fragment() throws RecognitionException {
// Disambiguation.g:17:4: ( ( DIGIT )+ '.' DIGIT )
// Disambiguation.g:17:5: ( DIGIT )+ '.' DIGIT
{
// Disambiguation.g:17:5: ( DIGIT )+
int cnt=0;
loop:
do {
int alt=;
switch (alt) {
case 1 :
// Disambiguation.g:17:5: DIGIT
{
mDIGIT(); if (failed) return ;
}
break;
default :
if ( cnt >= 1 ) break loop;
if (backtracking>0) {failed=true; return ;}
EarlyExitException eee =
new EarlyExitException(, input);
throw eee;
}
cnt++;
} while (true);
match('.'); if (failed) return ;
mDIGIT(); if (failed) return ;
}
}
// $ANTLR end synpred1
which is not a valid java.
Anyone knows how to fix this?
--
Thanks,
Alex.
More information about the antlr-interest
mailing list