|
|
1.1 ! root 1: ! 2: # include "macdefs" ! 3: # include "manifest" ! 4: ! 5: /* storage classes */ ! 6: # define SNULL 0 ! 7: # define AUTO 1 ! 8: # define EXTERN 2 ! 9: # define STATIC 3 ! 10: # define REGISTER 4 ! 11: # define EXTDEF 5 ! 12: # define LABEL 6 ! 13: # define ULABEL 7 ! 14: # define MOS 8 ! 15: # define PARAM 9 ! 16: # define STNAME 10 ! 17: # define MOU 11 ! 18: # define UNAME 12 ! 19: # define TYPEDEF 13 ! 20: # define FORTRAN 14 ! 21: # define ENAME 15 ! 22: # define MOE 16 ! 23: # define UFORTRAN 17 ! 24: # define USTATIC 18 ! 25: /* field size is ORed in */ ! 26: # define FIELD 0100 ! 27: # define FLDSIZ 077 ! 28: extern char *scnames(); ! 29: ! 30: /* location counters */ ! 31: # define PROG 0 ! 32: # define DATA 1 ! 33: # define ADATA 2 ! 34: # define STRNG 3 ! 35: # define ISTRNG 4 ! 36: # define STAB 5 ! 37: ! 38: ! 39: /* symbol table flags */ ! 40: # define SMOS 01 ! 41: # define SHIDDEN 02 ! 42: # define SHIDES 04 ! 43: # define SSET 010 ! 44: # define SREF 020 ! 45: ! 46: # define FIXDEF(p) outstab(p) ! 47: # ifndef FIXDEF ! 48: # define FIXDEF(p) ! 49: #endif ! 50: ! 51: /* alignment of initialized quantities */ ! 52: # ifndef AL_INIT ! 53: # define AL_INIT ALINT ! 54: # endif ! 55: ! 56: struct symtab { ! 57: char sname[NCHNAM]; ! 58: TWORD stype; /* type word */ ! 59: ! 60: char sclass; /* storage class */ ! 61: char slevel; /* scope level */ ! 62: char sflags; /* flags for set, use, hidden, mos, etc. */ ! 63: int offset; /* offset or value */ ! 64: short dimoff; /* offset into the dimension table */ ! 65: short sizoff; /* offset into the size table */ ! 66: short suse; /* line number of last use of the variable */ ! 67: }; ! 68: ! 69: ! 70: # ifdef ONEPASS ! 71: /* NOPREF must be defined for use in first pass tree machine */ ! 72: # define NOPREF 020000 /* no preference for register assignment */ ! 73: #else ! 74: ! 75: union ndu { ! 76: struct { ! 77: int op; ! 78: TWORD type; ! 79: int cdim, csiz; ! 80: NODE *left; ! 81: NODE * right; ! 82: }; ! 83: ! 84: struct { ! 85: /* this structure is the same as above, ! 86: but is used when a value, rather than ! 87: address, is kept in +left */ ! 88: int op; ! 89: TWORD type; ! 90: int cdim, csiz; ! 91: CONSZ lval; ! 92: int rval; ! 93: }; ! 94: ! 95: struct { ! 96: /* this structure is used when a floating point constant ! 97: is being computed */ ! 98: int op; ! 99: TWORD type; ! 100: int cdim, csiz; ! 101: double dval; ! 102: }; ! 103: ! 104: }; ! 105: # endif ! 106: ! 107: struct sw { ! 108: CONSZ sval; ! 109: int slab; ! 110: }; ! 111: ! 112: extern struct sw swtab[]; ! 113: extern struct sw *swp; ! 114: extern int swx; ! 115: ! 116: extern int ftnno; ! 117: extern int blevel; ! 118: extern int instruct, stwart; ! 119: ! 120: extern int lineno, nerrors; ! 121: typedef union { ! 122: int intval; ! 123: NODE * nodep; ! 124: } YYSTYPE; ! 125: extern YYSTYPE yylval; ! 126: ! 127: extern CONSZ lastcon; ! 128: extern double dcon; ! 129: ! 130: extern char ftitle[]; ! 131: extern char ititle[]; ! 132: extern struct symtab stab[]; ! 133: extern int curftn; ! 134: extern int curclass; ! 135: extern int curdim; ! 136: extern int dimtab[]; ! 137: extern int paramstk[]; ! 138: extern int paramno; ! 139: extern int autooff, argoff, strucoff; ! 140: extern int regvar; ! 141: extern int minrvar; ! 142: extern int brkflag; ! 143: extern char yytext[]; ! 144: ! 145: extern int strflg; ! 146: ! 147: extern OFFSZ inoff; ! 148: ! 149: extern int reached; ! 150: ! 151: /* tunnel to buildtree for name id's */ ! 152: ! 153: extern int idname; ! 154: ! 155: extern NODE node[]; ! 156: extern NODE *lastfree; ! 157: ! 158: extern int cflag, hflag, pflag; ! 159: ! 160: /* various labels */ ! 161: extern int brklab; ! 162: extern int contlab; ! 163: extern int flostat; ! 164: extern int retlab; ! 165: extern int retstat; ! 166: extern int asavbc[], *psavbc; ! 167: ! 168: /* flags used in structures/unions */ ! 169: ! 170: # define SEENAME 01 ! 171: # define INSTRUCT 02 ! 172: # define INUNION 04 ! 173: # define FUNNYNAME 010 ! 174: ! 175: /* flags used in the (elementary) flow analysis ... */ ! 176: ! 177: # define FBRK 02 ! 178: # define FCONT 04 ! 179: # define FDEF 010 ! 180: # define FLOOP 020 ! 181: ! 182: /* flags used for return status */ ! 183: ! 184: # define RETVAL 1 ! 185: # define NRETVAL 2 ! 186: ! 187: /* used to mark a constant with no name field */ ! 188: ! 189: # define NONAME 040000 ! 190: ! 191: /* mark an offset which is undefined */ ! 192: ! 193: # define NOOFFSET (-10201) ! 194: ! 195: /* declarations of various functions */ ! 196: ! 197: extern NODE ! 198: *buildtree(), ! 199: *bdty(), ! 200: *mkty(), ! 201: *rstruct(), ! 202: *dclstruct(), ! 203: *getstr(), ! 204: *tymerge(), ! 205: *stref(), ! 206: *offcon(), ! 207: *bcon(), ! 208: *bpsize(), ! 209: *convert(), ! 210: *pconvert(), ! 211: *oconvert(), ! 212: *ptmatch(), ! 213: *tymatch(), ! 214: *makety(), ! 215: *block(), ! 216: *doszof(), ! 217: *talloc(), ! 218: *optim(), ! 219: *strargs(), ! 220: *clocal(); ! 221: ! 222: OFFSZ tsize(), ! 223: psize(); ! 224: ! 225: TWORD types(); ! 226: ! 227: ! 228: double atof(); ! 229: ! 230: char *exname(), *exdcon(); ! 231: ! 232: # define checkst(x) ! 233: ! 234: # ifndef CHARCAST ! 235: /* to make character constants into character connstants */ ! 236: /* this is a macro to defend against cross-compilers, etc. */ ! 237: # define CHARCAST(x) (char)(x) ! 238: # endif ! 239:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.