diff --git a/src/backends/glr.c b/src/backends/glr.c
index f7b6f8b15ac41495a2cfb5c19cf787f81a3e8e4d..82ad5c06bf6e80c426ae45453933976bf7a32ef6 100644
--- a/src/backends/glr.c
+++ b/src/backends/glr.c
@@ -129,6 +129,8 @@ HParserBackendVTable h__glr_backend_vtable = {
 // dummy!
 int test_glr(void)
 {
+  HAllocator *mm__ = &system_allocator;
+
   /* 
      E -> E '+' E
         | 'd'
@@ -141,7 +143,7 @@ int test_glr(void)
   HParser *p = E;
 
   printf("\n==== G R A M M A R ====\n");
-  HCFGrammar *g = h_cfgrammar(&system_allocator, p);
+  HCFGrammar *g = h_cfgrammar_(mm__, h_desugar_augmented(mm__, p));
   if(g == NULL) {
     fprintf(stderr, "h_cfgrammar failed\n");
     return 1;
diff --git a/src/backends/lalr.c b/src/backends/lalr.c
index 242988eeed435fb77742ed92e9acbb91c4a67e66..93becf31b23f0ba5a1204441442c96622aa55fe7 100644
--- a/src/backends/lalr.c
+++ b/src/backends/lalr.c
@@ -207,7 +207,7 @@ static bool match_production(HLREnhGrammar *eg, HCFChoice **p,
 
 // desugar parser with a fresh start symbol
 // this guarantees that the start symbol will not occur in any productions
-static HCFChoice *augment(HAllocator *mm__, HParser *parser)
+HCFChoice *h_desugar_augmented(HAllocator *mm__, HParser *parser)
 {
   HCFChoice *augmented = h_new(HCFChoice, 1);
 
@@ -231,7 +231,7 @@ int h_lalr_compile(HAllocator* mm__, HParser* parser, const void* params)
   // build LR(0) table
   // if necessary, resolve conflicts "by conversion to SLR"
 
-  HCFGrammar *g = h_cfgrammar_(mm__, augment(mm__, parser));
+  HCFGrammar *g = h_cfgrammar_(mm__, h_desugar_augmented(mm__, parser));
   if(g == NULL)     // backend not suitable (language not context-free)
     return -1;
 
@@ -349,7 +349,7 @@ int test_lalr(void)
   HParser *p = E;
 
   printf("\n==== G R A M M A R ====\n");
-  HCFGrammar *g = h_cfgrammar_(mm__, augment(mm__, p));
+  HCFGrammar *g = h_cfgrammar_(mm__, h_desugar_augmented(mm__, p));
   if(g == NULL) {
     fprintf(stderr, "h_cfgrammar failed\n");
     return 1;
diff --git a/src/backends/lr.h b/src/backends/lr.h
index ca8418e8bfdefa568d748d12259a4be2520491c6..1158542ba98a0224355e98529b8b7562e3e67197 100644
--- a/src/backends/lr.h
+++ b/src/backends/lr.h
@@ -123,6 +123,7 @@ HHashValue h_hash_transition(const void *p);
 HLRDFA *h_lr0_dfa(HCFGrammar *g);
 HLRTable *h_lr0_table(HCFGrammar *g, const HLRDFA *dfa);
 
+HCFChoice *h_desugar_augmented(HAllocator *mm__, HParser *parser);
 int h_lalr_compile(HAllocator* mm__, HParser* parser, const void* params);
 void h_lalr_free(HParser *parser);