我试图实现一个解析器使用ANTLRv4语言,接受”“和\”作为逃避“分隔字符串中的字符”。ANTLRv4:读双引号与和“
this question的答案显示如何做“”转义。然而,当我试图把它扩大到也包括了\”的情况下,它几乎作品,但是当两个字符串在同一行变得过于贪婪
这里是我的语法:
grammar strings;
strings : STRING (',' STRING)* ;
STRING
: '"' (~[\r\n"] | '""' | '\"')* '"'
;
这里是我的三个字符串输入:
"This is ""my string\"",
"cat","fish"
这正确识别“这是‘’我的字符串\””,但认为‘猫’,‘鱼’是所有一个字符串。 如果我将“鱼”向下移动到下一行,它会正常工作。
任何人都可以弄清楚如何使它工作,如果“猫”和“鱼”在同一行?
这使得“猫”,“鱼”部分正常工作,但完全打破了逃逸部分。 –