我对如何在ANTLR4中捕获带引号的字符串感到有点困惑。
目前,此词法分析器规则并未按照我的预期方式进行标记。
示例字符串为"=\""
。我已经尝试了很多不同的方法来捕获它,但我对我正在做的不正确感到茫然。我非常感谢对此最佳实践的一些见解。非常感谢你!
ESCAPED_QUOTE : '\"';
QUOTED_STRING : '"' ( ESCAPED_QUOTE | ~('\n'|'\r') )*? '"';
答案 0 :(得分:8)
上述规则存在两个问题。
'\\"'
。ESCAPED_QUOTE
规则本身并不构成令牌,因此它应该是fragment
规则。这两项变更的结果如下:
fragment ESCAPED_QUOTE : '\\"';
QUOTED_STRING : '"' ( ESCAPED_QUOTE | ~('\n'|'\r') )*? '"';