1 char rcsid_item[] = "$Id$";
14 ia = (ItemArray) zalloc(max_nonterminal *sizeof(*ia));
19 itemArrayCopy(src) ItemArray src;
24 memcpy(dst, src, max_nonterminal * sizeof(*dst));
29 newItem_Set(relevant) Relevant relevant;
36 memset(ts->virgin, 0, max_nonterminal * sizeof(struct item));
44 ts = (Item_Set) zalloc(sizeof(struct item_set));
45 ts->virgin = newItemArray();
47 ts->relevant = relevant;
52 freeItem_Set(ts) Item_Set ts;
59 equivSet(a, b) Item_Set a; Item_Set b;
63 register Item *aa = a->virgin;
64 register Item *ba = b->virgin;
67 return !bcmp(a->virgin, b->virgin, max_nonterminal * sizeof(Item));
70 r = a->relevant ? a->relevant : b->relevant;
73 if (a->op && b->op && a->op != b->op) {
76 for (; (nt = *r) != 0; r++) {
77 if (aa[nt].rule != ba[nt].rule || !EQUALCOST(aa[nt].delta, ba[nt].delta)) {
85 printRepresentative(f, s) FILE *f; Item_Set s;
90 fprintf(f, "%s", s->op->name);
91 switch (s->op->arity) {
94 printRepresentative(f, s->kids[0]);
99 printRepresentative(f, s->kids[0]);
101 printRepresentative(f, s->kids[1]);
110 printf("[%s #%d]", t->rule->lhs->name, t->rule->num);
115 dumpItem_Set(ts) Item_Set ts;
119 printf("Item_Set #%d: [", ts->num);
120 for (i = 1; i < max_nonterminal; i++) {
121 if (ts->virgin[i].rule) {
123 dumpCost(ts->virgin[i].delta);
130 dumpCost(dc) DeltaCost dc;
132 printf("(%ld)", (long) dc);