[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