忽略转义的多行引号

Ignore escaped multi-line quotes

我想使用 Dart PetitParser 解析 GraphQL 文档。 为了能够支持 BlockString(多行字符串),我正在寻找一种方法来获取

来自

"""
abc
\"""
def
"""

这部分出来了

abc
\"""
def

完整语法https://facebook.github.io/graphql/draft/#sec-String-Value

我在移动设备上 Phone,我没有电脑可以测试,但按照这些思路应该可以工作:

string('"""') & (string(r'\"""') | any()).starLazy(string('"""')) & string('"""')

这会解析三重引号,然后是转义的三重引号或其他字符的任何序列,直到我们到达结尾的三重引号。可能你还想在内部添加一个 .flatten() 以获得一个纯字符串作为 return 值。