我对片段有以下定义:
fragment CHAR :'a'..'z'|'A'..'Z'|'\n'|'\t'|'\\'|EOF;
现在我必须为字符串定义一个词法分析器规则。我做了以下事情:
STRING : '"'(CHAR)*'"'
但是在字符串中,我想匹配除新行 '\n' 之外的所有字符。有什么想法可以实现吗?
最佳答案
您还需要排除 "
除了换行符。试试这个:
STRING : '"' ~('\r' | '\n' | '"')* '"' ;
~
否定字符集。ut I want to negate only the new line from my CHAR set
除了这个AFAIK之外别无他法:
STRING : '"' CHAR_NO_NL* '"' ;
fragment CHAR_NO_NL : 'a'..'z'|'A'..'Z'|'\t'|'\\'|EOF;
关于string - antlr 匹配任何字符,除了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14882531/