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