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);
}
;
我有这个语法:
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);
}
;