diff --git a/src/pprint.c b/src/pprint.c
index 2c9fbc2e96fdc3314d3df5b7d471a47c5d8c50a4..6747a2a8f7d6cef2bc1b352563e56380b7c0a3b5 100644
--- a/src/pprint.c
+++ b/src/pprint.c
@@ -32,16 +32,17 @@ typedef struct pp_state {
 } pp_state_t;
 
 void h_pprint(FILE* stream, const HParsedToken* tok, int indent, int delta) {
+  fprintf(stream, "%*s", indent, ""); 
   if (tok == NULL) {
-    fprintf(stream, "%*s(null)\n", indent, "");
+    fprintf(stream, "(null)\n");
     return;
   }
   switch (tok->token_type) {
   case TT_NONE:
-    fprintf(stream, "%*snone\n", indent, "");
+    fprintf(stream, "none");
     break;
   case TT_BYTES:
-    fprintf(stream, "%*s\"", indent, "");
+    fprintf(stream, "\"");
     for (size_t i = 0; i < tok->bytes.len; i++) {
       uint8_t c = tok->bytes.token[i];
       if (isprint(c))
@@ -49,35 +50,38 @@ void h_pprint(FILE* stream, const HParsedToken* tok, int indent, int delta) {
       else
         fprintf(stream, "\\%03hho", c);
     }
-    fprintf(stream, "\"\n");
+    fprintf(stream, "\"");
     break;
   case TT_SINT:
     if (tok->sint < 0)
-      fprintf(stream, "%*ss -%#" PRIx64 "\n", indent, "", -tok->sint);
+      fprintf(stream, "s -%#" PRIx64, -tok->sint);
     else
-      fprintf(stream, "%*ss %#" PRIx64 "\n", indent, "", tok->sint);
+      fprintf(stream, "s %#" PRIx64, tok->sint);
     break;
   case TT_UINT:
-    fprintf(stream, "%*su %#" PRIx64 "\n", indent, "", tok->uint);
+    fprintf(stream, "u %#" PRIx64, tok->uint);
     break;
   case TT_SEQUENCE:
-    fprintf(stream, "%*s[\n", indent, "");
-    for (size_t i = 0; i < tok->seq->used; i++) {
-      h_pprint(stream, tok->seq->elements[i], indent + delta, delta);
+    if (tok->seq->used == 0)
+      fprintf(stream, "[]");
+    else {
+      fprintf(stream, "[\n");
+      for (size_t i = 0; i < tok->seq->used; i++)
+        h_pprint(stream, tok->seq->elements[i], indent + delta, delta);
+      fprintf(stream, "%*s]", indent, "");
     }
-    fprintf(stream, "%*s]\n", indent, "");
     break;
   default:
     if(tok->token_type >= TT_USER) {
       const HTTEntry *e = h_get_token_type_entry(tok->token_type);
-      int num = tok->token_type-TT_USER;
-      fprintf(stream, "%*sUSER:%s %d\n", indent, "", e->name, num);
+      fprintf(stream, "USER %d (%s) ", e->value - TT_USER, e->name);
       if (e->pprint)
         e->pprint(stream, tok, indent + delta, delta);
     } else {
       assert_message(0, "Should not reach here.");
     }
   }
+  fputc('\n', stream);
 }