|
|
1.1 ! root 1: ! 2: /* Forms of data list elements */ ! 3: ! 4: #define SIMPLE 1 ! 5: #define NESTED 2 ! 6: ! 7: ! 8: /* data expression block types */ ! 9: ! 10: #define DVALUE 1 ! 11: #define DVAR 2 ! 12: #define DNAME 3 ! 13: #define DEXPR 4 ! 14: #define DERROR 5 ! 15: ! 16: ! 17: /* status codes for integer values */ ! 18: ! 19: #define NORMAL 1 ! 20: #define MAXPLUS1 2 ! 21: #define MINLESS1 3 ! 22: #define ERRVAL 4 ! 23: ! 24: ! 25: ! 26: /* data types for data statements */ ! 27: ! 28: ! 29: typedef ! 30: struct Dvalue ! 31: { ! 32: char tag; ! 33: char status; ! 34: ftnint value; ! 35: } ! 36: dvalue; ! 37: ! 38: ! 39: typedef ! 40: struct Dvar ! 41: { ! 42: char tag; ! 43: struct Dvalue *valp; ! 44: } ! 45: dvar; ! 46: ! 47: ! 48: typedef ! 49: struct Dname ! 50: { ! 51: char tag; ! 52: int len; ! 53: char *repr; ! 54: } ! 55: dname; ! 56: ! 57: ! 58: typedef ! 59: struct Dexpr ! 60: { ! 61: char tag; ! 62: char opcode; ! 63: union Vexpr *left; ! 64: union Vexpr *right; ! 65: } ! 66: dexpr; ! 67: ! 68: ! 69: typedef ! 70: struct Derror ! 71: { ! 72: char tag; ! 73: } ! 74: derror; ! 75: ! 76: ! 77: typedef ! 78: union Vexpr ! 79: { ! 80: char tag; ! 81: struct Dvalue dvalue; ! 82: struct Dvar dvar; ! 83: struct Dname dname; ! 84: struct Dexpr dexpr; ! 85: struct Derror derror; ! 86: } ! 87: vexpr; ! 88: ! 89: ! 90: typedef ! 91: struct Elist ! 92: { ! 93: struct Elist *next; ! 94: union Delt *elt; ! 95: } ! 96: elist; ! 97: ! 98: ! 99: typedef ! 100: struct Aelt ! 101: { ! 102: char tag; ! 103: Namep var; ! 104: struct Vlist *subs; ! 105: struct Rpair *range; ! 106: } ! 107: aelt; ! 108: ! 109: ! 110: typedef ! 111: struct DoList ! 112: { ! 113: char tag; ! 114: struct Elist *elts; ! 115: union Vexpr *dovar; ! 116: union Vexpr *init; ! 117: union Vexpr *limit; ! 118: union Vexpr *step; ! 119: } ! 120: dolist; ! 121: ! 122: ! 123: typedef ! 124: union Delt ! 125: { ! 126: char tag; ! 127: struct Aelt simple; ! 128: struct DoList nested; ! 129: } ! 130: delt; ! 131: ! 132: ! 133: typedef ! 134: struct Rpair ! 135: { ! 136: union Vexpr *low; ! 137: union Vexpr *high; ! 138: } ! 139: rpair; ! 140: ! 141: ! 142: typedef ! 143: struct ValList ! 144: { ! 145: struct ValList *next; ! 146: char status; ! 147: int repl; ! 148: Constp value; ! 149: } ! 150: vallist; ! 151: ! 152: ! 153: typedef ! 154: struct Vlist ! 155: { ! 156: struct Vlist *next; ! 157: union Vexpr *val; ! 158: } ! 159: vlist; ! 160: ! 161: ! 162: typedef ! 163: struct DoVars ! 164: { ! 165: struct DoVars *next; ! 166: int len; ! 167: char *repr; ! 168: dvalue *valp; ! 169: } ! 170: dovars; ! 171: ! 172: ! 173: ! 174: /* Global variables */ ! 175: ! 176: extern int badvalue; ! 177: extern flag overlapflag; ! 178: ! 179: ! 180: /* Global procedures */ ! 181: ! 182: extern frvexpr(); ! 183: extern frvlist(); ! 184: extern elist *revelist(); ! 185: extern vlist *revvlist(); ! 186: extern vlist *prepvexpr(); ! 187: extern elist *preplval(); ! 188: extern delt *mkdlval(); ! 189: extern delt *mkdatado(); ! 190: extern rpair *mkdrange(); ! 191: extern vallist *mkdrval(); ! 192: extern vexpr *evicon(); ! 193: extern vexpr *mkdname(); ! 194: extern expptr ivaltoicon(); ! 195: extern expptr evparam(); ! 196: extern vexpr *evaldname(); ! 197: extern vexpr *mkdexpr(); ! 198: extern vexpr *addivals(); ! 199: extern vexpr *subivals(); ! 200: extern vexpr *mulivals(); ! 201: extern vexpr *divivals(); ! 202: extern vexpr *powivals(); ! 203: extern vexpr *negival(); ! 204: extern expptr convconst(); ! 205: extern savedata();
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.