ANTLR4 中的转义引号?

Escape quote in ANTLR4?

我有这个语法:

grammar Hello;
STRING : '"' ( ESC | ~[\r\n"])*  '"' ;
fragment ESC : '\"' ;
r : STRING;

我想在输入字符串时:

"my name is : \" Whosebug \" "

结果将是:

"my name is : "Whosebug" "

但这是我测试时的结果:

那么我应该怎么做才能解决它?您的帮助将不胜感激。

如果不针对特定语言,就无法在语法中处理它。您可以在侦听器或访问器中遍历解析树时去掉斜线,或者在语法中嵌入目标特定代码。

如果 Java 是你的目标,你可以这样做:

STRING
 : '"' ( ESC | ~[\r\n"] )*  '"'
   {
     String text = getText();
     text = text.substring(1, text.length() - 1);
     text = text.replaceAll("\\(.)", "");
     setText(text);
   }
 ;