diff --git a/src/backends/lalr.c b/src/backends/lalr.c
index 66fe42c7aefd202b8f47b959c262e78cc9a9c0c8..aad47d4dc4084ed426a911dc5cd0d19a0311a2ff 100644
--- a/src/backends/lalr.c
+++ b/src/backends/lalr.c
@@ -836,15 +836,17 @@ void pprint_lraction(FILE *f, const HCFGrammar *g, const HLRAction *action)
   if(action->type == HLR_SHIFT) {
     fprintf(f, "s%lu", action->nextstate);
   } else {
+    fputs("r(", f);
+    h_pprint_symbol(f, g, action->production.lhs);
+    fputs(" -> ", f);
 #ifdef NDEBUG
     // if we can't print the production, at least print its length
-    fprintf(f, "r[%lu]", action->production.length);
+    fprintf(f, "[%lu]", action->production.length);
 #else
-    fputs("r(", f);
     HCFSequence seq = {action->production.rhs};
     h_pprint_sequence(f, g, &seq);
-    fputc(')', f);
 #endif
+    fputc(')', f);
   }
 }