Updated from files in llvm/autoconf. This was done immediently following
[oota-llvm.git] / utils / Burg / rule.c
1 char rcsid_rule[] = "$Id$";
2
3 #include "b.h"
4 #include <stdio.h>
5
6 RuleNum max_rule;
7 int max_erule_num;
8
9 struct rule stub_rule;
10
11 List rules;
12
13 Rule
14 newRule(delta, erulenum, lhs, pat) DeltaPtr delta; ERuleNum erulenum; NonTerminal lhs; Pattern pat;
15 {
16         Rule p;
17
18         p = (Rule) zalloc(sizeof(struct rule));
19         assert(p);
20         ASSIGNCOST(p->delta, delta);
21         p->erulenum = erulenum;
22         if (erulenum > max_erule_num) {
23                 max_erule_num = erulenum;
24         }
25         p->num = max_rule++;
26         p->lhs = lhs;
27         p->pat = pat;
28
29         rules = newList(p, rules);
30
31         return p;
32 }
33
34 void
35 dumpRule(p) Rule p;
36 {
37         dumpNonTerminal(p->lhs);
38         printf(" : ");
39         dumpPattern(p->pat);
40         printf(" ");
41         dumpCost(p->delta);
42         printf("\n");
43 }
44
45 void
46 dumpRuleList(l) List l;
47 {
48         foreachList((ListFn)dumpRule, l);
49 }