[antlr-interest] antlr beginner confused over ambiguities

Rick Schumeyer rschumeyer at gmail.com
Wed Feb 25 08:26:57 PST 2009


This works, but it gives me one token containing "12:34:56".  I still need
to parse the hh,mm,ss values.  What is the best way to do that?

It seems that I want the parser to be able to tell the lexer "normally you
can consider INT:INT:INT as a STRING.  But right now, return tokens for each
piece."  Isn't that what a semantic predicate does?  Or am I really missing
something?

On Tue, Feb 24, 2009 at 3:32 PM, Gavin Lambert <antlr at mirality.co.nz> wrote:

> 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 */
>  ;
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.antlr.org/pipermail/antlr-interest/attachments/20090225/dd6aa3ba/attachment.html 


More information about the antlr-interest mailing list