From 6b8a3f262f419cd3bfcb3dff2676bea3278c3532 Mon Sep 17 00:00:00 2001 From: Mikael Vejdemo-Johansson <michiexile@gmail.com> Date: Tue, 7 Apr 2015 22:14:32 +0200 Subject: [PATCH] polished generating function code more --- examples/explore_singular.c | 92 ------------------------------------- 1 file changed, 92 deletions(-) diff --git a/examples/explore_singular.c b/examples/explore_singular.c index 3c751451..5127c7c4 100644 --- a/examples/explore_singular.c +++ b/examples/explore_singular.c @@ -10,98 +10,6 @@ #include "../src/backends/lr.h" #include <stdio.h> -void h_pprint_gfexpr(FILE *file, const HCFGrammar *g, HCFSequence *seq) { - HCFChoice **x = seq->items; - - if (*x == NULL) { // empty sequence - fprintf(file, "1\n"); - } else { - while (*x) { - if (x != seq->items) { - fprintf(file, " + "); - } - // consume items - // if a string, - // count its length - // output t^length - - if ((*x)->type == HCF_CHAR) { - uint32_t count = 0; - for(; *x; x++, count++) { - if ((*x)->type != HCF_CHAR) { - break; - } - } - fprintf(file, "t^%d", count); - } else { - uint32_t count=0, n, i=0; - switch((*x)->type) { - case HCF_CHAR: - // should not be possible - break; - case HCF_END: - // does not generate any output symbols: value 0 - break; - case HCF_CHARSET: - for(i=0; i<256; i++) { - if (charset_isset((*x)->charset, i)) { - count++; - } - } - fprintf(file, "%d*t", count); - break; - default: - n = (uint8_t)(uintptr_t)h_hashtable_get(g->nts, x); - - fprintf(file, "%c(t)", 'A'+n); - } - x++; - } - } - } -} - - -void h_pprint_gfeqns_NOTUSED(FILE *file, const HCFGrammar *g) { - if (g->nts->used < 1) { - return; - } - - // determine maximum string length of symbol names - int len; - size_t s; - for(len=1, s=26; s < g->nts->used; len++, s*=26); - - // iterate over g->nts - size_t i; - HHashTableEntry *hte; - for(i=0; i < g->nts->capacity; i++) { - for(hte = &g->nts->contents[i]; hte; hte = hte->next) { - if (hte->key == NULL) { - continue; - } - const HCFChoice *lhs = hte->key; // production's left-hand symbol - assert(lhs->type == HCF_CHOICE); - - uint8_t n = (uint8_t)(uintptr_t)h_hashtable_get(g->nts, lhs); - fprintf(file, "%c(t) = ", 'A'+n); - - HCFSequence **p = lhs->seq; - if (*p == NULL) { - return; // shouldn't happen - } - - h_pprint_gfexpr(file, g, *p); - for(; *p; p++) { - fprintf(file, "\t"); - h_pprint_gfexpr(file, g, *p); - fprintf(file, "\n"); - } - } - } -} - - static const char *nonterminal_name(const HCFGrammar *g, const HCFChoice *nt) { static char buf[16] = {0}; // 14 characters in base 26 are enough for 64 bits -- GitLab