[antlr-interest] Why doesn't this work?

Indhu Bharathi indhu.b at s7software.com
Tue Apr 7 00:33:00 PDT 2009


I was working in a big grammar and stumbled on a problem with 
predicates. I've simplified the problem as much as possible and here it is:

When I give the input "1.", I expect the tokens <INT_LIT, DOT>. But what 
I get is "No viable alternative at character 'EOF'. I'm not able to 
understand why this happens. Any pointers?

grammar Test;

r    :    INT_LIT DOT+
    ;

INT_FLOAT_PATTERN
    :    (NUMBER DOT NUMBER LETTER ) => NUMBER DOT NUMBER LETTER
        { $type=PATTERN; }
       
    |    ( NUMBER DOT NUMBER ) =>  NUMBER DOT NUMBER
        { $type=FLOAT_LIT; }

    |    (NUMBER) => NUMBER
        { $type=INT_LIT; }

    ;

DOT    :    '.'
    ;

fragment PATTERN
    :    ;
   
fragment FLOAT_LIT
    :    ;
   
fragment INT_LIT
    :    ;   

   
fragment
NUMBER    :    ('0'..'9')+
    ;

fragment
LETTER    :    'a'..'z'
    ;
   

Thanks, Indhu



More information about the antlr-interest mailing list