我有以下片段的定义:
fragment CHAR :'a'..'z'|'A'..'Z'|'\n'|'\t'|'\\'|EOF;
现在我必须为字符串定义词法分析器规则。我做了以下事情:
STRING : '"'(CHAR)*'"'
但是在字符串中我希望匹配除新行'\ n'之外的所有字符。有什么想法我能做到吗?
答案 0 :(得分:11)
除了换行符之外,您还需要排除"
。试试这个:
STRING : '"' ~('\r' | '\n' | '"')* '"' ;
~
否定了字符集。
我只想否定我的CHAR集中的新行
除了这个AFAIK之外别无他法:
STRING : '"' CHAR_NO_NL* '"' ;
fragment CHAR_NO_NL : 'a'..'z'|'A'..'Z'|'\t'|'\\'|EOF;