diff --git a/src/cfgrammar.c b/src/cfgrammar.c index f9ece036213b2487b764782d65e010e5a6aeaf69..e24c8b26dda5c8fb1d158ddc319fac1cd887830f 100644 --- a/src/cfgrammar.c +++ b/src/cfgrammar.c @@ -823,13 +823,15 @@ static void pprint_ntrules(FILE *f, const HCFGrammar *g, const HCFChoice *nt, fputs(name, f); i += strlen(name); for(; i<column; i++) fputc(' ', f); - fputs(" ->", f); assert(nt->type == HCF_CHOICE); HCFSequence **p = nt->seq; if (*p == NULL) { - return; // shouldn't happen + fputs(" -x\n", f); // empty choice, e.g. h_nothing_p() + return; } + + fputs(" ->", f); pprint_sequence(f, g, *p++); // print first production on the same line for(; *p; p++) { // print the rest below with "or" bars for(i=0; i<column; i++) fputc(' ', f); // indent