#include #include #include "set.h" #include "syn.h" #include "hash.h" #include "generic.h" void #ifdef __USE_PROTOS dumpcycles(void) #else dumpcycles() #endif { Cycle *c; CacheEntry *f; ListNode *p; int i=0; int k; int degree; for (k=1; k <= CLL_k; k++) { if (Cycles[k] == NULL) continue; for (p = Cycles[k]->next; p!=NULL; p=p->next) { c = (Cycle *) p->elem; degree=set_deg(c->cyclicDep); fprintf(stderr,"Cycle %d: (degree %d) %s -->\n", i++, degree, RulePtr[c->croot]->rname); fprintf(stderr," *self*\n"); MR_dumpRuleSet(c->cyclicDep); fprintf(stderr,"\n"); f = (CacheEntry *) hash_get(Fcache,Fkey(RulePtr[c->croot]->rname,'o',k)); if (f == NULL) { fprintf(stderr," *** FOLLOW(%s) must be in cache but isn't ***\n", RulePtr[c->croot]->rname); }; }; }; } void #ifdef __USE_PROTOS dumpfostack(int k) #else dumpfostack(k) int k; #endif { int i=0; int *pi; fprintf(stderr,"\n"); if (FoStack[k] == NULL) { fprintf(stderr,"FoStack[%d] is null\n",k); }; if (FoTOS[k] == NULL) { fprintf(stderr,"FoTOS[%d] is null\n",k); } if (FoTOS[k] != NULL && FoStack[k] != NULL) { for (pi=FoStack[k]; pi <= FoTOS[k]; pi++) { i++; fprintf(stderr,"#%d rule %d %s\n",i,*pi,RulePtr[*pi]->rname); } } }