6

我对如何在 ANTLR4 中捕获带引号的字符串感到有些困惑。

目前,这个词法分析器规则没有按照我期望的方式进行标记。

示例字符串是"=\"". 我尝试了很多不同的方法来捕捉这一点,但我对自己做错了什么感到茫然。我非常感谢有关此最佳实践的一些见解。太感谢了!

ESCAPED_QUOTE : '\"';
QUOTED_STRING :   '"' ( ESCAPED_QUOTE | ~('\n'|'\r') )*? '"';
4

1 回答 1

8

上述规则有两个问题。

  1. 你实际上并没有像你想象的那样逃避你的报价。你的意思是使用'\\"'.
  2. 您的ESCAPED_QUOTE规则本身并不会形成一个标记,所以它应该是一个fragment规则。

这两个更改的结果如下:

fragment ESCAPED_QUOTE : '\\"';
QUOTED_STRING :   '"' ( ESCAPED_QUOTE | ~('\n'|'\r') )*? '"';
于 2013-10-08T00:44:42.723 回答