[antlr-interest] Lexer question
Jim Idle
jimi at temporal-wave.com
Tue Aug 23 14:54:03 PDT 2011
fragment NAME : ;
IDENTIFIER : LETTER (LETTER | NUMBER)*
(
':' { $type = NAME; }
|
)
;
However you could just do that in the parser, which would allow better
error reporting I suspect.
Jim
> -----Original Message-----
> From: antlr-interest-bounces at antlr.org [mailto:antlr-interest-
> bounces at antlr.org] On Behalf Of Scott Smith
> Sent: Tuesday, August 23, 2011 2:19 PM
> To: antlr-interest at antlr.org
> Subject: [antlr-interest] Lexer question
>
> I have a parser that is doing pretty much what I want. However, I want
> to do the following.
>
> I have a definition for an IDENTIFIER
>
> IDENTIFIER: LETTER (LETTER | NUMBER) // LETTER and
> NUMBER mean the usual thing
>
> Now in some of my rules, I'm looking for an IDENTIFIER and in one of my
> rules I look for a NAME. NAME has exactly the same definition as
> IDENTIFIER (starts with a letter followed by alphanumerics). However,
> you can tell by the token after whether it was a NAME or an IDENTIFIER.
> To be more explicit, a NAME is ALWAYS followed by a colon. An
> IDENTIFIER can be followed by a number of things, but NEVER by a colon.
>
> So, I have rules that looksomething like:
>
> rule1:
> NAME ':' expression
> ;
>
> rule2:
> IDENTIFIER '+' expression
> | IDENTIFIER '-' expression
> ;
>
> I don't seem to be able to make this work. Can someone suggest a
> solution? Do I have to turn on backtracking to make this work?
>
> Thanks
>
> Scott
>
>
> List: http://www.antlr.org/mailman/listinfo/antlr-interest
> Unsubscribe: http://www.antlr.org/mailman/options/antlr-interest/your-
> email-address
More information about the antlr-interest
mailing list