[antlr-interest] antlr beginner confused over ambiguities

Gavin Lambert antlr at mirality.co.nz
Tue Feb 24 12:32:52 PST 2009


At 08:52 25/02/2009, Rick Schumeyer wrote:
>If the input string is "12:34:45", then of course antlr returns a 
>STRING token.  I understand why it does that (I think) but I'm 
>not really sure how to fix that.  I'm fuzzy on the difference 
>between a semantic and syntactic predicate, and whether one of 
>those is what I need.
>
>grammar STest;
>
>line    :    timestamp;
>
>timestamp
>     :    INT ':' INT ':' INT
>     ;
>
>INT    :    ('0'..'9')+;
>
>STRING    :    ('!'..'+' | '-'..'~')+; /* anything but ws or 
>comma */

fragment TIMESTAMP: INT ':' INT ':' INT ;

INT : ('0'..'9')+ ;

STRING
   : (TIMESTAMP) => TIMESTAMP { $type = TIMESTAMP; }
   | ('!'..'+' | '-'..'~')+; /* anything but ws or comma */
   ;



More information about the antlr-interest mailing list