antlr匹配任何字符除外

And*_*rey 9 string antlr char match

我有以下片段的定义:

fragment CHAR   :'a'..'z'|'A'..'Z'|'\n'|'\t'|'\\'|EOF;  
Run Code Online (Sandbox Code Playgroud)

现在我必须为字符串定义词法分析器规则.我做了以下事情:

STRING   : '"'(CHAR)*'"'
Run Code Online (Sandbox Code Playgroud)

但是在字符串中我希望匹配除新行'\n'以外的所有字符.有什么想法我能做到吗?

Bar*_*ers 11

"除了换行符之外,您还需要排除.试试这个:

STRING : '"' ~('\r' | '\n' | '"')* '"' ;
Run Code Online (Sandbox Code Playgroud)

~则无效CHAR-套.

我想要否定我的CHAR集中的新行

除了这个AFAIK,别无他法:

STRING : '"' CHAR_NO_NL* '"' ;

fragment CHAR_NO_NL : 'a'..'z'|'A'..'Z'|'\t'|'\\'|EOF;  
Run Code Online (Sandbox Code Playgroud)