diff options
Diffstat (limited to 'support/tools/Burg/item.c')
-rw-r--r-- | support/tools/Burg/item.c | 133 |
1 files changed, 0 insertions, 133 deletions
diff --git a/support/tools/Burg/item.c b/support/tools/Burg/item.c deleted file mode 100644 index 4a9f4a320b..0000000000 --- a/support/tools/Burg/item.c +++ /dev/null @@ -1,133 +0,0 @@ -char rcsid_item[] = "$Id$"; - -#include "b.h" -#include <stdio.h> -#include <string.h> -#include "fe.h" - -static Item_Set fptr; - -ItemArray -newItemArray() -{ - ItemArray ia; - ia = (ItemArray) zalloc(max_nonterminal *sizeof(*ia)); - return ia; -} - -ItemArray -itemArrayCopy(src) ItemArray src; -{ - ItemArray dst; - - dst = newItemArray(); - memcpy(dst, src, max_nonterminal * sizeof(*dst)); - return dst; -} - -Item_Set -newItem_Set(relevant) Relevant relevant; -{ - Item_Set ts; - - if (fptr) { - ts = fptr; - fptr = 0; - memset(ts->virgin, 0, max_nonterminal * sizeof(struct item)); - if (ts->closed) { - zfree(ts->closed); - ts->closed = 0; - } - ts->num = 0; - ts->op = 0; - } else { - ts = (Item_Set) zalloc(sizeof(struct item_set)); - ts->virgin = newItemArray(); - } - ts->relevant = relevant; - return ts; -} - -void -freeItem_Set(ts) Item_Set ts; -{ - assert(!fptr); - fptr = ts; -} - -int -equivSet(a, b) Item_Set a; Item_Set b; -{ - register Relevant r; - register int nt; - register Item *aa = a->virgin; - register Item *ba = b->virgin; - - /* - return !bcmp(a->virgin, b->virgin, max_nonterminal * sizeof(Item)); - */ - - r = a->relevant ? a->relevant : b->relevant; - assert(r); - - if (a->op && b->op && a->op != b->op) { - return 0; - } - for (; (nt = *r) != 0; r++) { - if (aa[nt].rule != ba[nt].rule || !EQUALCOST(aa[nt].delta, ba[nt].delta)) { - return 0; - } - } - return 1; -} - -void -printRepresentative(f, s) FILE *f; Item_Set s; -{ - if (!s) { - return; - } - fprintf(f, "%s", s->op->name); - switch (s->op->arity) { - case 1: - fprintf(f, "("); - printRepresentative(f, s->kids[0]); - fprintf(f, ")"); - break; - case 2: - fprintf(f, "("); - printRepresentative(f, s->kids[0]); - fprintf(f, ", "); - printRepresentative(f, s->kids[1]); - fprintf(f, ")"); - break; - } -} - -void -dumpItem(t) Item *t; -{ - printf("[%s #%d]", t->rule->lhs->name, t->rule->num); - dumpCost(t->delta); -} - -void -dumpItem_Set(ts) Item_Set ts; -{ - int i; - - printf("Item_Set #%d: [", ts->num); - for (i = 1; i < max_nonterminal; i++) { - if (ts->virgin[i].rule) { - printf(" %d", i); - dumpCost(ts->virgin[i].delta); - } - } - printf(" ]\n"); -} - -void -dumpCost(dc) DeltaCost dc; -{ - printf("(%ld)", (long) dc); -} |