|
|
1.1 ! root 1: #include <stdio.h> ! 2: #include "def.h" ! 3: ! 4: char *typename[TYPENUM] = {"STLNVX", "IFVX", "DOVX", "IOVX", "FMTVX", ! 5: "COMPVX", "ASVX", "ASGOVX", "LOOPVX", "WHIVX", ! 6: "UNTVX", "ITERVX", "THENVX", "STOPVX", "RETVX", ! 7: "DUMVX", "GOVX", "BRKVX", "NXTVX", "SWCHVX", ! 8: "ACASVX", "ICASVX" ! 9: }; ! 10: int hascom[TYPENUM] = {2, 2, 2, 2, 2, ! 11: 2, 2, 2, 0, 0, ! 12: 0, 0, 2, 0, 0, ! 13: 0, 0, 0, 0, 2, ! 14: 2, 0 ! 15: }; ! 16: ! 17: int nonarcs[TYPENUM] = {FIXED+3, FIXED+4, FIXED+2, FIXED+3, FIXED+2, ! 18: FIXED+2, FIXED+2, FIXED+2, FIXED+1, FIXED+1, ! 19: FIXED+1, FIXED+4, FIXED+3, FIXED, FIXED, ! 20: FIXED+2, FIXED+1, FIXED + 1, FIXED + 1, FIXED+3, ! 21: FIXED+4, FIXED+2 ! 22: }; ! 23: ! 24: int childper[TYPENUM] = {0, 2, 1, 0, 0, ! 25: 0, 0, 0, 1, 1, ! 26: 1, 1, 1, 0, 0, ! 27: 1, 0, 0, 0, 1, ! 28: 2, 1 ! 29: }; ! 30: ! 31: int arcsper[TYPENUM] = {1, 2, 2, 3, 0, ! 32: -(FIXED+1), 1, -(FIXED+1), 1, 1, ! 33: 1, 1, 2, 0, 0, ! 34: -FIXED, 1, 1, 1, -(FIXED+1), ! 35: 2, 1 ! 36: }; ! 37: ! 38: VERT *arc(v,i) ! 39: VERT v; ! 40: int i; ! 41: { ! 42: ASSERT(DEFINED(v),arc); ! 43: ASSERT(0 <= i && i < ARCNUM(v), arc); ! 44: return(&graph[v][nonarcs[NTYPE(v)] + i ]); ! 45: } ! 46: ! 47: VERT *lchild(v,i) ! 48: VERT v; int i; ! 49: { ! 50: ASSERT(DEFINED(v),lchild); ! 51: ASSERT(0 <= i && i < childper[NTYPE(v)],lchild); ! 52: return(&graph[v][nonarcs[NTYPE(v)]-i-1]); ! 53: } ! 54: ! 55: int *vxpart(v,type,j) ! 56: VERT v; ! 57: int type,j; ! 58: { ! 59: ASSERT((NTYPE(v) == type) && (0 <= j) && (j < nonarcs[type] - FIXED), vxpart); ! 60: return(&graph[v][FIXED+j]); ! 61: } ! 62: ! 63: int *expres(v) ! 64: VERT v; ! 65: { ! 66: int ty; ! 67: ty = NTYPE(v); ! 68: ASSERT(ty == COMPVX || ty == ASGOVX || ty == ASVX || ty == SWCHVX || ty == ICASVX,expres); ! 69: return(&graph[v][FIXED]); ! 70: } ! 71: ! 72: int *negpart(v) ! 73: VERT v; ! 74: { ! 75: ASSERT(NTYPE(v) == IFVX || NTYPE(v) == ACASVX,negpart); ! 76: return(&graph[v][FIXED+1]); ! 77: } ! 78: ! 79: int *predic(v) ! 80: VERT v; ! 81: { ! 82: ASSERT(NTYPE(v) == IFVX || NTYPE(v) == ACASVX, predic); ! 83: return(&graph[v][FIXED]); ! 84: } ! 85: ! 86: int *level(v) ! 87: VERT v; ! 88: { ! 89: ASSERT(NTYPE(v) == GOVX || NTYPE(v) == BRKVX || NTYPE(v) == NXTVX, level); ! 90: return(&graph[v][FIXED]); ! 91: } ! 92: int *stlfmt(v,n) ! 93: VERT v; ! 94: int n; ! 95: { ! 96: ASSERT(NTYPE(v) == STLNVX || NTYPE(v) == FMTVX,stlfmt); ! 97: return(&graph[v][FIXED + n]); ! 98: } ! 99: ! 100: create(type,arcnum) ! 101: int type, arcnum; ! 102: { ! 103: int i, *temp, wds; ! 104: if (nodenum >= maxnode) ! 105: { ! 106: maxnode += 100; ! 107: temp=realloc(graph,maxnode*sizeof(*graph)); ! 108: free(graph); ! 109: graph=temp; ! 110: } ! 111: wds = nonarcs[type] + arcnum; ! 112: graph[nodenum] = galloc(sizeof(*graph) * wds); ! 113: for (i = 0; i < wds; i++) graph[nodenum][i] = 0; ! 114: NTYPE(nodenum) = type; ! 115: if (arcsper[type] < 0) ! 116: ARCNUM(nodenum) = arcnum; ! 117: ! 118: return(nodenum++); ! 119: } ! 120:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.