1 #include <stdio.h>
2 #include <ctype.h>
3 
4 #include "set.h"
5 #include "syn.h"
6 #include "hash.h"
7 #include "generic.h"
8 
9 void
10 #ifdef __USE_PROTOS
dumpcycles(void)11 dumpcycles(void)
12 #else
13 dumpcycles()
14 #endif
15 {
16   Cycle         *c;
17   CacheEntry    *f;
18   ListNode      *p;
19   int           i=0;
20   int           k;
21   int           degree;
22 
23   for (k=1; k <= CLL_k; k++) {
24     if (Cycles[k] == NULL) continue;
25 
26     for (p = Cycles[k]->next; p!=NULL; p=p->next) {
27   	  c = (Cycle *) p->elem;
28       degree=set_deg(c->cyclicDep);
29 	  fprintf(stderr,"Cycle %d: (degree %d) %s -->\n", i++, degree, RulePtr[c->croot]->rname);
30       fprintf(stderr,"    *self*\n");
31       MR_dumpRuleSet(c->cyclicDep);
32       fprintf(stderr,"\n");
33 	  f = (CacheEntry *)
34 			hash_get(Fcache,Fkey(RulePtr[c->croot]->rname,'o',k));
35       if (f == NULL) {
36         fprintf(stderr,"    *** FOLLOW(%s) must be in cache but isn't ***\n",
37                                          RulePtr[c->croot]->rname);
38       };
39     };
40   };
41 }
42 
43 void
44 #ifdef __USE_PROTOS
dumpfostack(int k)45 dumpfostack(int k)
46 #else
47 dumpfostack(k)
48 int k;
49 #endif
50 {
51   int   i=0;
52   int   *pi;
53 
54   fprintf(stderr,"\n");
55   if (FoStack[k] == NULL) {
56     fprintf(stderr,"FoStack[%d] is null\n",k);
57   };
58   if (FoTOS[k] == NULL) {
59     fprintf(stderr,"FoTOS[%d] is null\n",k);
60   }
61   if (FoTOS[k] != NULL && FoStack[k] != NULL) {
62     for (pi=FoStack[k]; pi <= FoTOS[k]; pi++) {
63       i++;
64       fprintf(stderr,"#%d  rule %d  %s\n",i,*pi,RulePtr[*pi]->rname);
65     }
66   }
67 }
68