Add script/print-json-token-debug-format.c -h flag
diff --git a/script/print-json-token-debug-format.c b/script/print-json-token-debug-format.c
index 5ddc73f..44e2e7d 100644
--- a/script/print-json-token-debug-format.c
+++ b/script/print-json-token-debug-format.c
@@ -126,8 +126,34 @@
 
 // ----
 
+const char* vbc_names[8] = {
+    "0:Filler..........",  //
+    "1:String..........",  //
+    "2:UnicodeCodePoint",  //
+    "3:Number..........",  //
+    "4:Structure.......",  //
+    "5:Reserved........",  //
+    "6:Reserved........",  //
+    "7:Reserved........",  //
+};
+
+const int base38_decode[38] = {
+    ' ', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '?',       //
+    'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',  //
+    'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',  //
+};
+
 const char*  //
 main1(int argc, char** argv) {
+  bool human_readable = false;
+  int i;
+  for (i = 1; i < argc; i++) {
+    if ((strcmp(argv[i], "-h") == 0) ||
+        (strcmp(argv[i], "--human-readable") == 0)) {
+      human_readable = true;
+    }
+  }
+
   src = wuffs_base__make_io_buffer(
       wuffs_base__make_slice_u8(src_buffer, SRC_BUFFER_SIZE),
       wuffs_base__empty_io_buffer_meta());
@@ -155,24 +181,47 @@
         uint8_t lp = wuffs_base__token__link_prev(t) ? 1 : 0;
         uint8_t ln = wuffs_base__token__link_next(t) ? 1 : 0;
         uint32_t vmajor = wuffs_base__token__value_major(t);
+        uint32_t vminor = wuffs_base__token__value_minor(t);
+        uint8_t vbc = wuffs_base__token__value_base_category(t);
+        uint32_t vbd = wuffs_base__token__value_base_detail(t);
 
-        uint8_t buf[16];
-        wuffs_base__store_u32be__no_bounds_check(&buf[0x0], (uint32_t)(pos));
-        wuffs_base__store_u16be__no_bounds_check(&buf[0x4], len);
-        wuffs_base__store_u8__no_bounds_check(&buf[0x0006], lp);
-        wuffs_base__store_u8__no_bounds_check(&buf[0x0007], ln);
-        wuffs_base__store_u32be__no_bounds_check(&buf[0x8], vmajor);
-        if (vmajor) {
-          uint32_t vminor = wuffs_base__token__value_minor(t);
-          wuffs_base__store_u32be__no_bounds_check(&buf[0xC], vminor);
+        if (human_readable) {
+          printf("pos=0x%08" PRIX32 "  len=0x%04" PRIX16 "  link=0b%d%d  ",
+                 (uint32_t)(pos), len, (int)(lp), (int)(ln));
+
+          if (vmajor) {
+            uint32_t m = vmajor;
+            uint32_t m0 = m / (38 * 38 * 38);
+            m -= m0 * (38 * 38 * 38);
+            uint32_t m1 = m / (38 * 38);
+            m -= m1 * (38 * 38);
+            uint32_t m2 = m / (38);
+            m -= m2 * (38);
+            uint32_t m3 = m;
+
+            printf("vmajor=0x%06" PRIX32 ":%c%c%c%c  vminor=0x%06" PRIX32 "\n",
+                   vmajor, base38_decode[m0], base38_decode[m1],
+                   base38_decode[m2], base38_decode[m3], vminor);
+          } else {
+            printf("vbc=%s   vbd=0x%06" PRIX32 "\n", vbc_names[vbc & 7], vbd);
+          }
+
         } else {
-          uint8_t vbc = wuffs_base__token__value_base_category(t);
-          uint32_t vbd = wuffs_base__token__value_base_detail(t);
-          wuffs_base__store_u8__no_bounds_check(&buf[0x000C], vbc);
-          wuffs_base__store_u24be__no_bounds_check(&buf[0xD], vbd);
+          uint8_t buf[16];
+          wuffs_base__store_u32be__no_bounds_check(&buf[0x0], (uint32_t)(pos));
+          wuffs_base__store_u16be__no_bounds_check(&buf[0x4], len);
+          wuffs_base__store_u8__no_bounds_check(&buf[0x0006], lp);
+          wuffs_base__store_u8__no_bounds_check(&buf[0x0007], ln);
+          wuffs_base__store_u32be__no_bounds_check(&buf[0x8], vmajor);
+          if (vmajor) {
+            wuffs_base__store_u32be__no_bounds_check(&buf[0xC], vminor);
+          } else {
+            wuffs_base__store_u8__no_bounds_check(&buf[0x000C], vbc);
+            wuffs_base__store_u24be__no_bounds_check(&buf[0xD], vbd);
+          }
+          const int stdout_fd = 1;
+          write(stdout_fd, &buf[0], 16);
         }
-        const int stdout_fd = 1;
-        write(stdout_fd, &buf[0], 16);
       }
 
       pos += len;