如何使用 C++ 运行时从 CSS 中提取 ANTLR4 引用字符串

How to extract ANTLR4 quoted string from CSS using C++ runtime

我正在使用 ANTLR4 和来自 https://github.com/antlr/grammars-v4/tree/master/css3 的 CSS 语法。它主要工作,但当我在 CSS 中使用带引号的字符串时,我 运行 遇到了问题。例如,使用以下 CSS

.b1
{
  font-family: "Gill Sans", serif;
}

我想提取 "Gill Sans" 和 "serif",两者都不带引号。当在字符串周围使用引号时,解析器会生成一个 KnownTermContext,然后有一个 String() 方法,即 returns 和 antlr4::tree::TerminalNode*。返回对象的 getText() 方法 returns 字符串,包括引号。似乎 String() 仅在引用字符串时才有效,因此理论上我可以在这种情况下手动删除引号,但在使用像 ANTLR 这样的解析器时似乎没有必要。

有没有办法提取删除引号的字符串,或者在这种情况下是否由调用者删除引号?

[...] or is it up to the caller to remove the quotes in this case?

是的,这是正确的。在 ANTLR 中没有办法从标记中剥离字符(即没有目标特定代码)。这可以在侦听器或访问器中遍历解析树时完成。