14

次のフラグメントの定義があります。

fragment CHAR   :'a'..'z'|'A'..'Z'|'\n'|'\t'|'\\'|EOF;  

次に、文字列のレクサー ルールを定義する必要があります。私は次のことをしました:

STRING   : '"'(CHAR)*'"'

ただし、文字列では、改行「\ n」を除くすべての文字に一致させたいと考えています。どうすればそれを達成できるのでしょうか?

4

1 に答える 1

16

"改行以外にも除外する必要があります。これを試して:

STRING : '"' ~('\r' | '\n' | '"')* '"' ;

~char-setsを無効にします。

UTCHARセットの改行のみを無効にしたい

このAFAIK以外の方法はありません:

STRING : '"' CHAR_NO_NL* '"' ;

fragment CHAR_NO_NL : 'a'..'z'|'A'..'Z'|'\t'|'\\'|EOF;  
于 2013-02-14T19:55:34.853 に答える