[antlr-interest] Selectively ignoring whitespace

Indhu Bharathi indhu.b at s7software.com
Tue Jan 13 21:01:34 PST 2009


If you are not using single quote anywhere else in the grammar, you can try
this:

STRING
	: 	SINGLEQUOTE ( options {greedy=false;} : . )* SINGLEQUOTE
	;

If you are using single quote at other places also, then the problem becomes
little more complex.

In that case you have to decide in the lexer itself, in which situation you
must emit WS as default token. For example you can decide to emit WS as
default token between every pair of DQUOTE. Is it possible to define this
exactly in your grammar? If it is possible then you can override the emit
method and have two helped functions setWSDefault and unsetWSDefault.

- Indhu

-----Original Message-----
From: antlr-interest-bounces at antlr.org
[mailto:antlr-interest-bounces at antlr.org] On Behalf Of Chris Pinnick
Sent: Wednesday, January 14, 2009 3:10 AM
To: antlr-interest at antlr.org
Subject: [antlr-interest] Selectively ignoring whitespace

I'd like to ignor white space in general, and am doing so currently using

WS : (' '
    |'t'
   | '\n' )+
     {$channel=HIDDEN;} ;


but would like to include whitespace characters at certain points, e.g.
when reading in a text string beginning with a  '
so I have something like this:

IDENT_WSPACE
         :  LETTER {(LETTER | DIGIT | WS )*;

input_ident: SINGLEQUOTE string=IDENT_WSPACE SINGLEQUOTE;


But it is not currently working, any ideas?

thanks,
chris

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