Jim,

Don't you mean that the ! operator is not supported in the Lexer?

Phil would need a parser rule to discard the token.  Something like:

//Convert ID from a fragment to a token
ID: ALPHA (ALPHA | INT)*;
EXT: 'EXT.';
external_call: EXT! ID;

rule: call=external_call '(' { stack.push(new
        FuncName($call.text)); } (expressList { ... } )? ')'
        expressList: ...;



Colin Macdonald
Senior Consultant
_____________________________________ 

GROUP Business Software
Phone: 770 720 1300 ext: 6132

http://www.gbs.com/




From:   "Jim Idle" <[email protected]>
To:     <[email protected]>
Date:   2010-11-17 11:19 AM
Subject:        Re: [antlr-interest] Is '!' operator working with ANTLR 
3.1.2
Sent by:        [email protected]



Remember antlr.markmail.org 

This operator is not supported in ANTLR3 for performance reasons. But if 
the
pieces you don't want are at the start or end, then you can just change 
the
start and/or end points of the token.

Jim

> -----Original Message-----
> From: [email protected] [mailto:antlr-interest-
> [email protected]] On Behalf Of Philippe Frankson
> Sent: Wednesday, November 17, 2010 4:51 AM
> To: [email protected]
> Subject: [antlr-interest] Is '!' operator working with ANTLR 3.1.2
> 
> 
> When I call my parser with -> EXT.MyFunc() The value returned by
> $EXTERNAL_CALL.getText() is 'EXT.MyFunc' where I would expect to have
> only 'MyFunc' (because I'm using the '!' operator in the lexer here
> below).
> 
> fragment INT                           : ('0'..'9');
> fragment ALPHA                                 : 
('a'..'z'|'A'..'Z'|'_');
> fragment ID                                            : ALPHA (ALPHA | 
INT)*;
> 
> EXTERNAL_CALL: 'EXT.'! ID;
> 
> 
> rule: EXTERNAL_CALL '(' { stack.push(new
> FuncName($EXTERNAL_CALL.getText())); } (expressList { ... } )? ')'
> expressList: ...;
> 
> 
> Any idea why the '!' operator looks like not working ? What am I doing
> wrong ?
> 
> Thank you.
> Philippe Frankson
> 
> 
> List: http://www.antlr.org/mailman/listinfo/antlr-interest
> Unsubscribe: http://www.antlr.org/mailman/options/antlr-interest/your-
> email-address


List: http://www.antlr.org/mailman/listinfo/antlr-interest
Unsubscribe: 
http://www.antlr.org/mailman/options/antlr-interest/your-email-address


List: http://www.antlr.org/mailman/listinfo/antlr-interest
Unsubscribe: 
http://www.antlr.org/mailman/options/antlr-interest/your-email-address

-- 
You received this message because you are subscribed to the Google Groups 
"il-antlr-interest" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/il-antlr-interest?hl=en.

Reply via email to