diff --git a/src/backends/lalr.c b/src/backends/lalr.c
index ba10e0ca8587c866b72e96d03c1351a9a037d8a2..5ba3be58749ad96792a73ca4b5c644098e4719c5 100644
--- a/src/backends/lalr.c
+++ b/src/backends/lalr.c
@@ -351,6 +351,8 @@ int h_lalr_compile(HAllocator* mm__, HParser* parser, const void* params)
         h_slist_push(table->inadeq, (void *)(uintptr_t)state);
       }
     }
+
+    h_cfgrammar_free(eg->grammar);
   }
 
   h_cfgrammar_free(g);