simpleStringLiteral method
Implementation
Parser<StringLiteralNode> simpleStringLiteral() =>
ref1(
token,
[
// Multi-line
string('"""') &
(string(r'\"') |
string(r'\\') |
string(r'\$') |
pattern('^"\$').plus() |
string('"""').neg())
.star() &
string('"""'),
string("'''") &
(string(r"\'") |
string(r'\\') |
string(r'\$') |
pattern("^'\$").plus() |
string("'''").neg())
.star() &
string("'''"),
// Single-line
char('"') &
(string(r'\"') |
string(r'\\') |
string(r'\$') |
pattern('^"\$\r\n'))
.star() &
char('"'),
char("'") &
(string(r"\'") |
string(r'\\') |
string(r'\$') |
pattern("^'\$\r\n"))
.star() &
char("'"),
].toChoiceParser().flatten(),
).map((token) {
final val = token.value;
if (val.startsWith('"""') || val.startsWith("'''")) {
return StringLiteralNode(val.substring(3, val.length - 3));
}
return StringLiteralNode(val.substring(1, val.length - 1));
});