2014-11-03 92 views
1

我有以下规则:antlr4 - 字符串字面转义

value  : STRING; 

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

这是允许的"在字符串中存在一个正确和聪明的方法是什么?它被转义为\"

字符串被解析如下:

final ValueContext c = ...; 
final String s = c.STRING().getText(); 

s.substring(1, s.length() - 1).replaceAll("\\\\\"", "\""); 

回答

2

是的,这是很多其他语言如何让报价进行转义。请注意,~'"'还允许换行符包含在字符串文字中。如果你不想要,用~["\r\n]替换它。