[antlr-interest] Token stream filter

Anthony Youngman Anthony.Youngman at ECA-International.com
Wed Jun 2 03:26:53 PDT 2004


Okay. Doing my own homework :-) Would this work (needing cleaning up, I
don't know what to throw etc ...)?

filter=DEREMER

protected DEREMER [returns token] : (
	(newline|semi)
	(id:IDENT {if text != "REM" throw tokenmatchexception}|"*"|"!")
	("=" {throw exception} | "(" {throw exception})?
	({greedy=false} .)
	newline)
	returns newline;

Cheers,
Wol

-----Original Message-----
From: Anthony Youngman [mailto:Anthony.Youngman at ECA-International.com] 
Sent: 02 June 2004 11:14
To: antlr-interest at yahoogroups.com
Subject: [antlr-interest] Token stream filter

This sounds like it should be very easy, but I can't see how to do it
...

I want to filter the token stream coming out of the lexer (and I can't
see how to do it using the lexer's filter - can I do the same thing in
the parser?). Anyways, I want to match the following sequence

(newline | semi) ("rem" | "*" | "!" ) ~( "=" | "(" ) ({greedy=false} .)
newline)

eating everything EXCEPT the newline, which needs to be passed through
to the parser. Note also, that while "*" and "!" are tokens, "rem" is an
ident. Of course, if I need "rem" to be a token, presumably if this rule
fails I can convert it back to an ident?

Or do I need to write my own token stream to do this (if so, where do I
look for an example?)

Cheers,
Wol


************************************************************************
****

This transmission is intended for the named recipient only. It may
contain private and confidential information. If this has come to you in
error you must not act on anything disclosed in it, nor must you copy
it, modify it, disseminate it in any way, or show it to anyone. Please
e-mail the sender to inform us of the transmission error or telephone
ECA International immediately and delete the e-mail from your
information system.

Telephone numbers for ECA International offices are: Sydney +61 (0)2
8272 5300, Hong Kong + 852 2121 2388, London +44 (0)20 7351 5000 and New
York +1 212 582 2333.

************************************************************************
****



 
Yahoo! Groups Links



 



 
Yahoo! Groups Links

<*> To visit your group on the web, go to:
     http://groups.yahoo.com/group/antlr-interest/

<*> To unsubscribe from this group, send an email to:
     antlr-interest-unsubscribe at yahoogroups.com

<*> Your use of Yahoo! Groups is subject to:
     http://docs.yahoo.com/info/terms/
 



More information about the antlr-interest mailing list