我有一个文字“ON blah blah blah blah可能是什么”
我希望匹配ON,某事,“等等等等等等等等”
我有我的代币
ON : ('O'|'o')('N'|'n');
INDEX: (options {greedy=false;}: ESC | .)*
WS :
( ' '
| '\t'
| '\r'
| '\n'
)+
{ $channel=HIDDEN; }
;
ESC :
'\\' ('"'|'\''|'\\')
;
我通常希望丢失空格,因此隐藏了通道,但在这种情况下,我希望将字符串的其余部分与空格匹配。我该如何在规则中这样做?像
这样的东西myRule:ON INDEX REST;
但不确定REST应该是什么? (并且不确定我是否需要虚构的令牌)。
感谢, 迪安
答案 0 :(得分:1)
如果我正确理解你的问题,那么你的语法将是这样的(适用于你的例子):
grammar so1;
myRule: ON INDEX rest;
rest : ~('\r'|'\n')*;
ON : ('O'|'o')('N'|'n');
INDEX : (LETTER | DIGIT)+;
WS :
( ' '
| '\t'
| '\r'
| '\n'
)+
{ $channel=HIDDEN; }
;
fragment DIGIT : '0'..'9' ;
fragment LETTER : ('a'..'z' | 'A'..'Z' | '_');