0

私はテキストを持っています。

ON、something、および「blah blah blah could be anything」を一致させたい

私はトークンを次のように持っています

ON      :   ('O'|'o')('N'|'n');
INDEX: (options {greedy=false;}: ESC | .)*
WS  :
    (   ' '
        |   '\t'
        |   '\r'
        |   '\n'
        )+
        { $channel=HIDDEN; }
        ;  
ESC :
    '\\' ('"'|'\''|'\\')
    ;

通常は空白を破棄してチャネルを非表示にしたいのですが、この場合は残りの文字列を空白と一致させたいと考えています。ルールでこれを行うにはどうすればよいですか?何かのようなもの

myRule: ON INDEX REST;

しかし、REST がどうあるべきかわからない? (そして、架空のトークンが必要かどうかはわかりません)。

ありがとう、ディーン

4

1 に答える 1

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' | '_');           
于 2012-09-19T15:21:45.917 に答える