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' | '_');