c++ - 如何使用 C++ 运行时从 CSS 中提取 ANTLR4 引用字符串
问题描述
我正在使用来自https://github.com/antlr/grammars-v4/tree/master/css3的 ANTLR4 和 CSS 语法。它大部分都在工作,但是当我在 CSS 中使用带引号的字符串时遇到了问题。例如,使用以下 CSS
.b1
{
font-family: "Gill Sans", serif;
}
我想提取“Gill Sans”和“serif”,两者都没有引号。当在字符串周围使用引号时,解析器会生成 a KnownTermContext
,然后有一个String()
返回 a 的方法antlr4::tree::TerminalNode*
。该返回对象的getText()
方法返回字符串,包括引号。似乎String()
仅在引用字符串时才有效,因此理论上我可以在这种情况下手动删除引号,但在使用像 ANTLR 这样的解析器时似乎没有必要这样做。
有没有办法提取删除引号的字符串,或者在这种情况下由调用者来删除引号?
解决方案
[...] 还是由调用者在这种情况下删除引号?
是的,这是正确的。ANTLR 中没有办法从标记中去除字符(即没有目标特定代码)。这可以在遍历侦听器或访问者中的解析树时完成。
推荐阅读
- sql-server - SQL Server 全文搜索在时间窗口内的最大性能限制
- c# - AspNet 用户声明丢失
- google-apps-script - getActiveCell() 总是返回 1,1
- ansible - Ansible 测试变量以什么开头
- android - 在 Android 中将字符串作为文件附件共享
- swift - 如何告诉用户准确的度数是朝北还是朝东?
- scala - Cats - EitherT - 发散隐式扩展以进行理解而无需显式输入?
- javascript - E/configParser - ReferenceError: 元素未定义
- bazel - 替换和 Java 库生命周期
- excel - VBA:如何根据包含某些字符的相邻单元格删除列?