dumpcycles.c
上传用户:itx_2006
上传日期:2007-01-06
资源大小:493k
文件大小:1k
源码类别:

编译器/解释器

开发平台:

Others

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