antlr,我能';似乎找不到如何匹配行的其余部分(包括空格)
我有一段文字“关于某件事,诸如此类,诸如此类” 我想和“什么都可以”匹配 我的代币是antlr,我能';似乎找不到如何匹配行的其余部分(包括空格),antlr,antlr3,Antlr,Antlr3,我有一段文字“关于某件事,诸如此类,诸如此类” 我想和“什么都可以”匹配 我的代币是 ON : ('O'|'o')('N'|'n'); INDEX: (options {greedy=false;}: ESC | .)* WS : ( ' ' | '\t' | '\r' | '\n' )+ { $channel=HIDDEN; } ; ESC : '
ON : ('O'|'o')('N'|'n');
INDEX: (options {greedy=false;}: ESC | .)*
WS :
( ' '
| '\t'
| '\r'
| '\n'
)+
{ $channel=HIDDEN; }
;
ESC :
'\\' ('"'|'\''|'\\')
;
我通常希望丢弃空白,这样通道就隐藏了,但在这种情况下,我希望将字符串的其余部分与空白匹配。在规则中我如何做到这一点?差不多
myRule:关于索引REST
但不确定剩下的应该是什么?(并且不确定我是否需要虚拟令牌)
谢谢,
Dean如果我正确理解了您的问题,那么您的语法将是这样的(适用于您的示例):
假想的代币与此无关。你想做的(按你的想法)可能是不可能的。您正在分析现有的语言吗?如果是,哪一个?如果注意,请更详细地解释您试图解析的(真实世界)输入,而不是一个小用例。
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' | '_');