diff --git a/src/cfgrammar.c b/src/cfgrammar.c
index 0c51589ad0cf556f8837dd7a4f9accae1e11c813..bc7b3582dd03d177143c2217cc48764736403710 100644
--- a/src/cfgrammar.c
+++ b/src/cfgrammar.c
@@ -595,7 +595,7 @@ static void stringset_extend(HCFGrammar *g, HStringMap *ret,
 }
 
 
-static void pprint_char(FILE *f, char c)
+void h_pprint_char(FILE *f, char c)
 {
   switch(c) {
   case '"': fputs("\\\"", f); break;
@@ -619,7 +619,7 @@ static void pprint_charset_char(FILE *f, char c)
   case '"': fputc(c, f); break;
   case '-': fputs("\\-", f); break;
   case ']': fputs("\\-", f); break;
-  default:  pprint_char(f, c);
+  default:  h_pprint_char(f, c);
   }
 }
 
@@ -667,7 +667,7 @@ static HCFChoice **pprint_string(FILE *f, HCFChoice **x)
   for(; *x; x++) {
     if((*x)->type != HCF_CHAR)
       break;
-    pprint_char(f, (*x)->chr);
+    h_pprint_char(f, (*x)->chr);
   }
   fputc('"', f);
   return x;
@@ -678,7 +678,7 @@ void h_pprint_symbol(FILE *f, const HCFGrammar *g, const HCFChoice *x)
   switch(x->type) {
   case HCF_CHAR:
     fputc('"', f);
-    pprint_char(f, x->chr);
+    h_pprint_char(f, x->chr);
     fputc('"', f);
     break;
   case HCF_END:
diff --git a/src/cfgrammar.h b/src/cfgrammar.h
index 6aba29cc9e1e261cf31b8d5ea2becd22079d2b55..a5de4d6b4ddea202fa8ff12afc9d7fe27fcbcbb6 100644
--- a/src/cfgrammar.h
+++ b/src/cfgrammar.h
@@ -93,3 +93,4 @@ void h_pprint_sequence(FILE *f, const HCFGrammar *g, const HCFSequence *seq);
 void h_pprint_symbol(FILE *f, const HCFGrammar *g, const HCFChoice *x);
 void h_pprint_symbolset(FILE *file, const HCFGrammar *g, const HHashSet *set, int indent);
 void h_pprint_stringset(FILE *file, const HStringMap *set, int indent);
+void h_pprint_char(FILE *file, char c);