Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Antlr4 ANTLRv4:如何读取字符串中的双引号转义双引号?_Antlr4 - Fatal编程技术网

Antlr4 ANTLRv4:如何读取字符串中的双引号转义双引号?

Antlr4 ANTLRv4:如何读取字符串中的双引号转义双引号?,antlr4,Antlr4,在Antlrv4中,我们如何像在VBA中一样使用双引号转义的双引号来解析这种字符串 正文: "some string with ""john doe"" in it" 目标是识别字符串:某个字符串中包含“johndoe” 有没有可能重写它,把双引号变成单双引号“”->“?如下所示: STRING : '"' (~[\r\n"] | '""')* '"' ; 其中,~[\r\n“]|”“”表示: ~[\r\n"] # any char other than '\r', '\n' an

在Antlrv4中,我们如何像在VBA中一样使用双引号转义的双引号来解析这种字符串

正文:

"some string with ""john doe"" in it"
目标是识别字符串:
某个字符串中包含“johndoe”

有没有可能重写它,把双引号变成单双引号<代码>“”->“?

如下所示:

STRING
 : '"' (~[\r\n"] | '""')* '"'
 ;
其中,
~[\r\n“]|”“”
表示:

~[\r\n"]    # any char other than '\r', '\n' and double quotes
|           # OR
'""'        # two successive double quotes
有没有可能重写它,把双引号变成单双引号

没有嵌入自定义代码就不行。在Java中,它可能看起来像:

STRING
 : '"' (~[\r\n"] | '""')* '"' 
   {
     String s = getText();
     s = s.substring(1, s.length() - 1); // strip the leading and trailing quotes
     s = s.replace("\"\"", "\""); // replace all double quotes with single quotes
     setText(s);
   }
 ;

工作起来很有魅力。附带问题,是否可以重写它,将双引号转换为单双引号?“->”?谢谢!@Jayde查看我的修订答案。对于我使用ANTLR 4,以下规则适用于双引号和单引号字符串:STRING:”(~[\r\n”]|“)*”“|”\”(~[\r\n\']|“\”);”@Sasha您的字符串在线程“main”java.lang.RuntimeException:set为空“@AlexeySh”中引发“无效转义序列”异常。我想这是因为我从C程序复制了粘贴,而您将其粘贴到java程序中,在java程序中,转义双引号的方式不同(不是通过“\”)