rawStringLiteral method
Implementation
Parser<StringLiteralNode> rawStringLiteral() =>
ref1(
token,
[
// Triple-quoted raw strings
string('r"""') & any().starLazy(string('"""')) & string('"""'),
string("r'''") & any().starLazy(string("'''")) & string("'''"),
// Single-quoted raw strings
string('r"') & pattern('^"\r\n').star() & char('"'),
string("r'") & pattern("^'\r\n").star() & char("'"),
].toChoiceParser().flatten(),
).map((token) {
final val = token.value;
if (val.startsWith('r"""') || val.startsWith("r'''")) {
return StringLiteralNode(
val.substring(4, val.length - 3),
isRaw: true,
);
}
return StringLiteralNode(val.substring(2, val.length - 1), isRaw: true);
});