我有以下声明:
RETURN "-\\-";
RETURN '-\n-';
antlr4帮我捡的字符串是:
StringLiteral: "-\\-";
StringLiteral: '-\n-';
我打印这个字符串:
"-\\-";
'-\n-';
但这就是我想要的:
-\-;
-
-;
原因是Antlr使用了函数
escapeWhitespace
std::string& escapeWhitespace(std::string& out, std::string_view in) {
out.reserve(in.size()); // Best case, no escaping.
for (const auto &c : in) {
switch (c) {
case '\t':
out.append("\\t");
break;
case '\r':
out.append("\\r");
break;
case '\n':
out.append("\\n");
break;
default:
out.push_back(c);
break;
}
}
return out;
}
我实际得到的字符串是
\"-\\\\n-\"
,不知道Antlr有没有提供函数让我获取转义后的字符串?
Antlr 版本:4.11.1 语言:C++