[antlr-interest] Match a repetition of characters

Robin diabeteman at gmail.com
Fri Jun 24 03:02:27 PDT 2011


Hello everyone,

I'm trying to write a rule that matches the repetition (4 or more) of the
same special character

For example:

"^^^^^^^^^^^^^^^^^^^^"

or

"________________"

I have these lexer rules :

UNDERSCORE : '_';
BACKTICK : '`';
STAR : '*';
PIPE : '|';
COLUMN : ':';
SPECIAL_CHAR :
('!'|'"'|'#'|'$'|'%'|'&'|'\''|'('|')'|'+'|','|'.'|'/'|';'|'<'|'='|'>'|'?'|'@'|'['|'\\'|']'|'^'|'{'|'}'|'~');
LINE_BREAK : '\u000C'?'\r'?'\n';

And I'd like to write a parser rule named "underline" that only matches if
this is a repetition of *the same character* and that returns this
character. So that enclosing rules can use it.

For now I wrote this:

underline returns [char symbol]
  : underlineAtom {$symbol=$underlineAtom.text} {$symbol}+ LINE_BREAK
  ;

underlineAtom
  : UNDERSCORE
  | STAR
  | PIPE
  | BACKTICK
  | COLUMN
  | SPECIAL_CHAR
  ;

But my grammar does not compile...

Can someone help me on this ? :)

Thanks


More information about the antlr-interest mailing list