Add test/data/json-quirks.json
diff --git a/script/print-json-token-debug-format.c b/script/print-json-token-debug-format.c
index 7d4827f..7e5001a 100644
--- a/script/print-json-token-debug-format.c
+++ b/script/print-json-token-debug-format.c
@@ -139,6 +139,7 @@
 
   bool all_tokens;
   bool human_readable;
+  bool quirks;
 } flags = {0};
 
 const char*  //
@@ -171,6 +172,10 @@
       flags.human_readable = true;
       continue;
     }
+    if (!strcmp(arg, "q") || !strcmp(arg, "quirks")) {
+      flags.quirks = true;
+      continue;
+    }
 
     return "main: unrecognized flag argument";
   }
@@ -218,6 +223,32 @@
     return wuffs_base__status__message(&init_status);
   }
 
+  if (flags.quirks) {
+    uint32_t quirks[] = {
+        WUFFS_JSON__QUIRK_ALLOW_BACKSLASH_A,
+        WUFFS_JSON__QUIRK_ALLOW_BACKSLASH_CAPITAL_U,
+        WUFFS_JSON__QUIRK_ALLOW_BACKSLASH_E,
+        WUFFS_JSON__QUIRK_ALLOW_BACKSLASH_QUESTION_MARK,
+        WUFFS_JSON__QUIRK_ALLOW_BACKSLASH_SINGLE_QUOTE,
+        WUFFS_JSON__QUIRK_ALLOW_BACKSLASH_V,
+        WUFFS_JSON__QUIRK_ALLOW_BACKSLASH_X,
+        WUFFS_JSON__QUIRK_ALLOW_BACKSLASH_ZERO,
+        WUFFS_JSON__QUIRK_ALLOW_COMMENT_BLOCK,
+        WUFFS_JSON__QUIRK_ALLOW_COMMENT_LINE,
+        WUFFS_JSON__QUIRK_ALLOW_EXTRA_COMMA,
+        WUFFS_JSON__QUIRK_ALLOW_INF_NAN_NUMBERS,
+        WUFFS_JSON__QUIRK_ALLOW_LEADING_ASCII_RECORD_SEPARATOR,
+        WUFFS_JSON__QUIRK_ALLOW_LEADING_UNICODE_BYTE_ORDER_MARK,
+        WUFFS_JSON__QUIRK_ALLOW_TRAILING_NEW_LINE,
+        WUFFS_JSON__QUIRK_REPLACE_INVALID_UTF_8,
+        0,
+    };
+    uint32_t i;
+    for (i = 0; quirks[i]; i++) {
+      wuffs_json__decoder__set_quirk_enabled(&dec, quirks[i], true);
+    }
+  }
+
   uint64_t pos = 0;
   while (true) {
     wuffs_base__status status =
diff --git a/test/c/std/json.c b/test/c/std/json.c
index 0819511..0eb64ec 100644
--- a/test/c/std/json.c
+++ b/test/c/std/json.c
@@ -783,6 +783,11 @@
     .src_filename = "test/data/nobel-prizes.json",
 };
 
+golden_test json_json_quirks_gt = {
+    .want_filename = "test/data/json-quirks.tokens",
+    .src_filename = "test/data/json-quirks.json",
+};
+
 // ---------------- JSON Tests
 
 const char*  //
@@ -811,6 +816,41 @@
         &json_australian_abc_gt));
   }
 
+  {
+    uint32_t quirks[] = {
+        WUFFS_JSON__QUIRK_ALLOW_BACKSLASH_A,
+        WUFFS_JSON__QUIRK_ALLOW_BACKSLASH_CAPITAL_U,
+        WUFFS_JSON__QUIRK_ALLOW_BACKSLASH_E,
+        WUFFS_JSON__QUIRK_ALLOW_BACKSLASH_QUESTION_MARK,
+        WUFFS_JSON__QUIRK_ALLOW_BACKSLASH_SINGLE_QUOTE,
+        WUFFS_JSON__QUIRK_ALLOW_BACKSLASH_V,
+        WUFFS_JSON__QUIRK_ALLOW_BACKSLASH_X,
+        WUFFS_JSON__QUIRK_ALLOW_BACKSLASH_ZERO,
+        WUFFS_JSON__QUIRK_ALLOW_COMMENT_BLOCK,
+        WUFFS_JSON__QUIRK_ALLOW_COMMENT_LINE,
+        WUFFS_JSON__QUIRK_ALLOW_EXTRA_COMMA,
+        WUFFS_JSON__QUIRK_ALLOW_INF_NAN_NUMBERS,
+        WUFFS_JSON__QUIRK_ALLOW_LEADING_ASCII_RECORD_SEPARATOR,
+        WUFFS_JSON__QUIRK_ALLOW_LEADING_UNICODE_BYTE_ORDER_MARK,
+        WUFFS_JSON__QUIRK_ALLOW_TRAILING_NEW_LINE,
+        WUFFS_JSON__QUIRK_REPLACE_INVALID_UTF_8,
+        0,
+    };
+
+    wuffs_json__decoder dec;
+    CHECK_STATUS("initialize",
+                 wuffs_json__decoder__initialize(
+                     &dec, sizeof dec, WUFFS_VERSION,
+                     WUFFS_INITIALIZE__LEAVE_INTERNAL_BUFFERS_UNINITIALIZED));
+    uint32_t i;
+    for (i = 0; quirks[i]; i++) {
+      wuffs_json__decoder__set_quirk_enabled(&dec, quirks[i], true);
+    }
+    CHECK_STRING(do_test__wuffs_base__token_decoder(
+        wuffs_json__decoder__upcast_as__wuffs_base__token_decoder(&dec),
+        &json_json_quirks_gt));
+  }
+
   return NULL;
 }
 
diff --git a/test/data/json-quirks.json b/test/data/json-quirks.json
new file mode 100644
index 0000000..5d3a877
--- /dev/null
+++ b/test/data/json-quirks.json
@@ -0,0 +1,16 @@
+[
+	123,
+	nan,
+	+INFINITY,
+	"escaped \a\b\e\f\n\r\t\v\0\'\"\?\\\/ things",
+	{
+		"ABC\u0394E": // U+00000394 GREEK CAPITAL LETTER DELTA.
+		"mno\U0001F4A9q", /* U+0001F4A9 PILE OF POO. */
+		/* And now for some
+		 * invalid Unicode. */
+		"ABC\uD800E": // Unpaired surrogate.
+		"mno\U12345678q", // Out of range.
+	},
+	"w\x58\x59z",
+	"invÿlid UTF-8",
+]
diff --git a/test/data/json-quirks.tokens b/test/data/json-quirks.tokens
new file mode 100644
index 0000000..d9a8296
--- /dev/null
+++ b/test/data/json-quirks.tokens
Binary files differ