rawStringLiteral method

Parser<StringLiteralNode> rawStringLiteral()
inherited

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);
    });