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