         .group(
           .capture(), .zeroOrMore(.greedy, .characterClass(.any)))))
     parseTest(
-      "abc\\d", concat("a", "b", "c", .characterClass(.digit)))
-    parseTest(
-      "a\\u0065b\\u{00000065}c\\x65d\\U00000065",
+      #"abc\d"#, concat("a", "b", "c", .characterClass(.digit)))
+    parseTest(
+      #"a\u0065b\u{00000065}c\x65d\U00000065"#,
       concat("a", .unicodeScalar("e"),
              "b", .unicodeScalar("e"),
              "c", .unicodeScalar("e"),

      .setOperator(.doubleAmpersand), .rightSquareBracket,
      .rightSquareBracket, "&", "&")

    lexTest("$\\A\\B[\\A\\B$]", .anchor(.lineEnd), .anchor(.stringStart),
            .anchor(.nonWordBoundary), .leftSquareBracket, esc("A"), esc("B"),
            "$", .rightSquareBracket)

    let specialChars = [.tab, .carriageReturn, .formFeed, .bell, .escape]
      .map(Token.specialCharEscape)

    lexTest("\\t\\r\\f\\a\\e[\\t\\r\\f\\a\\e]",
            specialChars + [.leftSquareBracket] + specialChars +
            [.rightSquareBracket])

    // \b is a word boundary outside of a character class, otherwise it's
    // backspace.
    lexTest("[\\b]\\b", .leftSquareBracket, .specialCharEscape(.backspace),
            .rightSquareBracket, .anchor(.wordBoundary))
    lexTest("[\\b", .leftSquareBracket, .specialCharEscape(.backspace))
  }
}


    lexTest(
      "abc", "a", "b", "c")
    lexTest(
      #"ab\c"#, "a", "b", esc("c"))
    lexTest(
      #"abc\+d*"#, "a", "b", "c", esc("+"), "d", .star)
    lexTest(
      "abc(de)+fghi*k|j",
      "a", "b", "c", .leftParen, "d", "e", .rightParen,
