[antlr-interest] White space

Alex Rodriguez arodmail at gmail.com
Wed Sep 1 11:30:04 PDT 2010


Greetings,

Given a very simple grammar for a language that only has an 'if'
statement, I would like to be able to parse white space within literal
values. So far, this works (case 1):

if(value=='white space'){doThis('arg')}

But this doesn't work (case 2):

if (value == 'white space') { doThis('arg') }

Note that case 2 is spaced for readability.

Debugging case 2 in ANTLRWorks produces a MismatchedTokenException.

What is the best way to handle both cases? Here is the grammar:

grammar Lang;

statement
	:
		'if' LPAREN ID EQ literalValue RPAREN '{' action '}'
	;

literalValue
	:
		'\'' ID '\''
	;
	
action
	:
		ID LPAREN literalValue RPAREN
	;
		
ID
	:
		('a'..'z' | 'A'..'Z' | '0'..'9' | '@' | ':' | '_' | ' ' | '+')+
	;

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


More information about the antlr-interest mailing list