1: #include <stdio.h>
   2: #include "def.h"
   3: #include "3.def.h"
   4: 
   5: 
   6: getbranch(head)
   7: VERT *head;
   8:     {
   9:     VERT v;
  10:     for (v = 0; v < nodenum; ++v)
  11:         LABEL(v) = FALSE;
  12:     for (v = START; DEFINED(v); v = RSIB(v))
  13:         chkbranch(v,head);
  14:     addlab(START);
  15:     }
  16: 
  17: 
  18: 
  19: chkbranch(v,head)
  20: VERT v,*head;
  21:     {
  22:     VERT  w;
  23:     int i;
  24:     switch(NTYPE(v))
  25:         {
  26:         case GOVX:
  27:                 for (i = 1, w = head[v]; DEFINED(w); w = head[w], ++i)
  28:                     {
  29:                     if (i > 1 && !levnxt && !levbrk) break;
  30:                     if (ARC(v,0) == BRK(w) && (levbrk || i == 1))
  31:                         {
  32:                         NTYPE(v) = BRKVX;
  33:                         LEVEL(v) = i;
  34:                         break;
  35:                         }
  36:                     else if (ARC(v,0) == NXT(w) && (levnxt || i == 1))
  37:                         {
  38:                         NTYPE(v) = NXTVX;
  39:                         LEVEL(v) = i;
  40:                         break;
  41:                         }
  42:                     }
  43:             if (NTYPE(v) == GOVX)
  44:                 {
  45:                 if (ARC(v,0) == stopvert)
  46:                     NTYPE(v) = STOPVX;
  47:                 else if (ARC(v,0) == retvert)
  48:                     NTYPE(v) = RETVX;
  49:                 else LABEL(ARC(v,0)) = TRUE;
  50:                 }
  51:             break;
  52:         case COMPVX:
  53:         case ASGOVX:
  54:             for (i = 0; i < ARCNUM(v); ++i)
  55:                 LABEL(ARC(v,i)) = TRUE;
  56:             break;
  57:         case IOVX:
  58:                 if (DEFINED(ARC(v,ENDEQ)))
  59:                     LABEL(ARC(v,ENDEQ)) = TRUE;
  60:                 if (DEFINED(ARC(v,ERREQ)))
  61:                     LABEL(ARC(v,ERREQ)) = TRUE;
  62:                 if (DEFINED(FMTREF(v)))
  63:                     LABEL(FMTREF(v)) = TRUE;
  64:                 break;
  65:         }
  66:     for (i = 0; i < CHILDNUM(v); ++i)
  67:         for (w = LCHILD(v,i); DEFINED(w); w = RSIB(w))
  68:             chkbranch(w,head);
  69:     }
  70: 
  71: 
  72: addlab(v)       /* add labels */
  73: VERT v;
  74:     {
  75:     int recvar;
  76:     if (NTYPE(v) != ITERVX && LABEL(v) )
  77:         LABEL(v) = nxtlab();
  78:     RECURSE(addlab,v,recvar);
  79:     if (NTYPE(v) == ITERVX && LABEL(NXT(v)))
  80:         LABEL(NXT(v)) = nxtlab();
  81:     }
  82: 
  83: 
  84: nxtlab()
  85:     {
  86:     static count;
  87:     return(labinit + (count++) * labinc);
  88:     }

Defined functions

addlab defined in line 72; used 2 times
chkbranch defined in line 19; used 2 times
getbranch defined in line 6; used 1 times
nxtlab defined in line 84; used 2 times
Last modified: 1981-07-10
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 736
Valid CSS Valid XHTML 1.0 Strict