如何在 ANTLR4 中的字符串中包含引号
How to include quotes in string in ANTLR4
如何将字符串和字符的引号包含在字符串中。示例是 "This is a \" string"
,在这种情况下,它应该生成一个字符串,而不是 "This is a \"
作为一个字符串,而 string"
作为错误。角色也是如此。例子是'\'',但是
在我的例子中它只是'\'。
这是我目前的解决方案,只在没有引号的情况下有效。
字符
: '\'' ~('\'')+ '\''
;
字符串
: '"' ~('"')+ '"'
;
您的 string/char 规则没有正确处理转义序列。对于角色,它应该是:
CHARACTER: '\'' '\'? '.' '\'';
在这里,我们将转义字符(反斜杠)作为规则的一部分,并要求在其后跟一个额外的字符(无论它是什么)。与字符串相似:
STRING: '"' ('\'? .)+? '"';
通过使用 +?
我们告诉 ANTLR4 以非贪婪的方式进行匹配,在初始引号之后的第一个非转义引号字符处停止。
如何将字符串和字符的引号包含在字符串中。示例是 "This is a \" string"
,在这种情况下,它应该生成一个字符串,而不是 "This is a \"
作为一个字符串,而 string"
作为错误。角色也是如此。例子是'\'',但是
在我的例子中它只是'\'。
这是我目前的解决方案,只在没有引号的情况下有效。
字符 : '\'' ~('\'')+ '\'' ;
字符串 : '"' ~('"')+ '"' ;
您的 string/char 规则没有正确处理转义序列。对于角色,它应该是:
CHARACTER: '\'' '\'? '.' '\'';
在这里,我们将转义字符(反斜杠)作为规则的一部分,并要求在其后跟一个额外的字符(无论它是什么)。与字符串相似:
STRING: '"' ('\'? .)+? '"';
通过使用 +?
我们告诉 ANTLR4 以非贪婪的方式进行匹配,在初始引号之后的第一个非转义引号字符处停止。