Annotation of 42BSD/lib/mip/manifest, revision 1.1

1.1     ! root        1: 
        !             2: # include <stdio.h>
        !             3: /*     manifest constant file for the lex/yacc interface */
        !             4: 
        !             5: # define ERROR 1
        !             6: # define NAME 2
        !             7: # define STRING 3
        !             8: # define ICON 4
        !             9: # define FCON 5
        !            10: # define PLUS 6
        !            11: # define MINUS 8
        !            12: # define MUL 11
        !            13: # define AND 14
        !            14: # define OR 17
        !            15: # define ER 19
        !            16: # define QUEST 21
        !            17: # define COLON 22
        !            18: # define ANDAND 23
        !            19: # define OROR 24
        !            20: 
        !            21: /* the defines for ASOP, RELOP, EQUOP, DIVOP,
        !            22:    SHIFTOP, ICOP, UNOP, and STROP have been
        !            23:    moved to mfile1                             */
        !            24: /*     reserved words, etc */
        !            25: # define TYPE 33
        !            26: # define CLASS 34
        !            27: # define STRUCT 35
        !            28: # define RETURN 36
        !            29: # define GOTO 37
        !            30: # define IF 38
        !            31: # define ELSE 39
        !            32: # define SWITCH 40
        !            33: # define BREAK 41
        !            34: # define CONTINUE 42
        !            35: # define WHILE 43
        !            36: # define DO 44
        !            37: # define FOR 45
        !            38: # define DEFAULT 46
        !            39: # define CASE 47
        !            40: # define SIZEOF 48
        !            41: # define ENUM 49
        !            42: 
        !            43: 
        !            44: /*     little symbols, etc. */
        !            45: /*     namely,
        !            46: 
        !            47:        LP      (
        !            48:        RP      )
        !            49: 
        !            50:        LC      {
        !            51:        RC      }
        !            52: 
        !            53:        LB      [
        !            54:        RB      ]
        !            55: 
        !            56:        CM      ,
        !            57:        SM      ;
        !            58: 
        !            59:        */
        !            60: 
        !            61: /*  These defines are being moved to mfile1
        !            62:     to alleviate preprocessor problems with
        !            63:     second pass files.  
        !            64: # define LP 50
        !            65: # define RP 51
        !            66: # define LC 52
        !            67: # define RC 53
        !            68: */
        !            69: # define LB 54
        !            70: # define RB 55
        !            71: # define CM 56
        !            72: # define SM 57
        !            73: # define ASSIGN 58
        !            74: 
        !            75: /*     END OF YACC */
        !            76: 
        !            77: /*     left over tree building operators */
        !            78: # define COMOP 59
        !            79: # define DIV 60
        !            80: # define MOD 62
        !            81: # define LS 64
        !            82: # define RS 66
        !            83: # define DOT 68
        !            84: # define STREF 69
        !            85: # define CALL 70
        !            86: # define FORTCALL 73
        !            87: # define NOT 76
        !            88: # define COMPL 77
        !            89: # define INCR 78
        !            90: # define DECR 79
        !            91: # define EQ 80
        !            92: # define NE 81
        !            93: # define LE 82
        !            94: # define LT 83
        !            95: # define GE 84
        !            96: # define GT 85
        !            97: # define ULE 86
        !            98: # define ULT 87
        !            99: # define UGE 88
        !           100: # define UGT 89
        !           101: # define SETBIT 90
        !           102: # define TESTBIT 91
        !           103: # define RESETBIT 92
        !           104: # define ARS 93
        !           105: # define REG 94
        !           106: # define OREG 95
        !           107: # define CCODES 96
        !           108: # define FREE 97
        !           109: # define STASG 98
        !           110: # define STARG 99
        !           111: # define STCALL 100
        !           112: 
        !           113: /*     some conversion operators */
        !           114: # define FLD 103
        !           115: # define SCONV 104
        !           116: # define PCONV 105
        !           117: # define PMCONV 106
        !           118: # define PVCONV 107
        !           119: 
        !           120: /*     special node operators, used for special contexts */
        !           121: # define FORCE 108
        !           122: # define CBRANCH 109
        !           123: # define INIT 110
        !           124: # define CAST 111
        !           125: 
        !           126: /*     node types */
        !           127: # define LTYPE 02
        !           128: # define UTYPE 04
        !           129: # define BITYPE 010
        !           130: 
        !           131:        /* DSIZE is the size of the dope array */
        !           132: # define DSIZE CAST+1
        !           133: 
        !           134: /*     type names, used in symbol table building */
        !           135: # define TNULL PTR    /* pointer to UNDEF */
        !           136: # define TVOID FTN     /* function returning UNDEF (for void) */
        !           137: # define UNDEF 0
        !           138: # define FARG 1
        !           139: # define CHAR 2
        !           140: # define SHORT 3
        !           141: # define INT 4
        !           142: # define LONG 5
        !           143: # define FLOAT 6
        !           144: # define DOUBLE 7
        !           145: # define STRTY 8
        !           146: # define UNIONTY 9
        !           147: # define ENUMTY 10
        !           148: # define MOETY 11
        !           149: # define UCHAR 12
        !           150: # define USHORT 13
        !           151: # define UNSIGNED 14
        !           152: # define ULONG 15
        !           153: 
        !           154: # define ASG 1+
        !           155: # define UNARY 2+
        !           156: # define NOASG (-1)+
        !           157: # define NOUNARY (-2)+
        !           158: 
        !           159: /*     various flags */
        !           160: # define NOLAB (-1)
        !           161: 
        !           162: /* type modifiers */
        !           163: 
        !           164: # define PTR  020
        !           165: # define FTN  040
        !           166: # define ARY  060
        !           167: 
        !           168: /* type packing constants */
        !           169: 
        !           170: # define TMASK 060
        !           171: # define TMASK1 0300
        !           172: # define TMASK2  0360
        !           173: # define BTMASK 017
        !           174: # define BTSHIFT 4
        !           175: # define TSHIFT 2
        !           176: 
        !           177: /*     macros  */
        !           178: 
        !           179: # define MODTYPE(x,y) x = ( (x)&(~BTMASK))|(y)  /* set basic type of x to y */
        !           180: # define BTYPE(x)  ( (x)&BTMASK)   /* basic type of x */
        !           181: # define ISUNSIGNED(x) ((x)<=ULONG&&(x)>=UCHAR)
        !           182: # define UNSIGNABLE(x) ((x)<=LONG&&(x)>=CHAR)
        !           183: # define ENUNSIGN(x) ((x)+(UNSIGNED-INT))
        !           184: # define DEUNSIGN(x) ((x)+(INT-UNSIGNED))
        !           185: # define ISPTR(x) (( (x)&TMASK)==PTR)
        !           186: # define ISFTN(x)  (( (x)&TMASK)==FTN)  /* is x a function type */
        !           187: # define ISARY(x)   (( (x)&TMASK)==ARY)   /* is x an array type */
        !           188: # define INCREF(x) ((( (x)&~BTMASK)<<TSHIFT)|PTR|( (x)&BTMASK))
        !           189: # define DECREF(x) ((( (x)>>TSHIFT)&~BTMASK)|( (x)&BTMASK))
        !           190: # define SETOFF(x,y)   if( (x)%(y) != 0 ) (x) = ( ((x)/(y) + 1) * (y))
        !           191:                /* advance x to a multiple of y */
        !           192: # define NOFIT(x,y,z)   ( ( (x)%(z) + (y) ) > (z) )
        !           193:                /* can y bits be added to x without overflowing z */
        !           194:        /* pack and unpack field descriptors (size and offset) */
        !           195: # define PKFIELD(s,o) (( (o)<<6)| (s) )
        !           196: # define UPKFSZ(v)  ( (v) &077)
        !           197: # define UPKFOFF(v) ( (v) >>6)
        !           198: 
        !           199: /*     operator information */
        !           200: 
        !           201: # define TYFLG 016
        !           202: # define ASGFLG 01
        !           203: # define LOGFLG 020
        !           204: 
        !           205: # define SIMPFLG 040
        !           206: # define COMMFLG 0100
        !           207: # define DIVFLG 0200
        !           208: # define FLOFLG 0400
        !           209: # define LTYFLG 01000
        !           210: # define CALLFLG 02000
        !           211: # define MULFLG 04000
        !           212: # define SHFFLG 010000
        !           213: # define ASGOPFLG 020000
        !           214: 
        !           215: # define SPFLG 040000
        !           216: 
        !           217: #define optype(o) (dope[o]&TYFLG)
        !           218: #define asgop(o) (dope[o]&ASGFLG)
        !           219: #define logop(o) (dope[o]&LOGFLG)
        !           220: #define callop(o) (dope[o]&CALLFLG)
        !           221: 
        !           222: /*     table sizes     */
        !           223: 
        !           224: # ifndef FORT
        !           225: # define TREESZ 350 /* space for building parse tree */
        !           226: # else
        !           227: # define TREESZ 1000
        !           228: # endif
        !           229: 
        !           230: #ifndef FLEXNAMES
        !           231: # define NCHNAM 8  /* number of characters in a name */
        !           232: #else
        !           233: char *hash();
        !           234: char *savestr();
        !           235: char *tstr();
        !           236: extern int tstrused;
        !           237: extern char *tstrbuf[], **curtstr;
        !           238: #define        freetstr()      curtstr = tstrbuf, tstrused = 0
        !           239: #endif
        !           240: 
        !           241: /*     common defined variables */
        !           242: 
        !           243: extern int nerrors;  /* number of errors seen so far */
        !           244: 
        !           245: typedef union ndu NODE;
        !           246: typedef unsigned int TWORD;
        !           247: # define NIL (NODE *)0
        !           248: extern int dope[];  /* a vector containing operator information */
        !           249: extern char *opst[];  /* a vector containing names for ops */
        !           250: 
        !           251: # ifdef ONEPASS
        !           252:        /* in one-pass operation, define the tree nodes */
        !           253: 
        !           254: union ndu {
        !           255: 
        !           256:        struct {
        !           257:                int op;
        !           258:                int rall;
        !           259:                TWORD type;
        !           260:                int su;
        !           261: #ifndef FLEXNAMES
        !           262:                char name[NCHNAM];
        !           263: #else
        !           264:                char *name;
        !           265:                int stalign;
        !           266: #endif
        !           267:                NODE *left;
        !           268:                NODE *right;
        !           269:                }in; /* interior node */
        !           270:        
        !           271:        struct {
        !           272:                int op;
        !           273:                int rall;
        !           274:                TWORD type;
        !           275:                int su;
        !           276: #ifndef FLEXNAMES
        !           277:                char name[NCHNAM];
        !           278: #else
        !           279:                char *name;
        !           280:                int stalign;
        !           281: #endif
        !           282:                CONSZ lval;
        !           283:                int rval;
        !           284:                }tn; /* terminal node */
        !           285:        
        !           286:        struct {
        !           287:                int op, rall;
        !           288:                TWORD type;
        !           289:                int su;
        !           290:                int label;  /* for use with branching */
        !           291:                }bn; /* branch node */
        !           292: 
        !           293:        struct {
        !           294:                int op, rall;
        !           295:                TWORD type;
        !           296:                int su;
        !           297:                int stsize;  /* sizes of structure objects */
        !           298:                int stalign;  /* alignment of structure objects */
        !           299:                }stn; /* structure node */
        !           300: 
        !           301:        struct {
        !           302:                int op;
        !           303:                int cdim;
        !           304:                TWORD type;
        !           305:                int csiz;
        !           306:                }fn; /* front node */
        !           307:        
        !           308:        struct {
        !           309:                /* this structure is used when a floating point constant
        !           310:                   is being computed */
        !           311:                int op;
        !           312:                int cdim;
        !           313:                TWORD type;
        !           314:                int csiz;
        !           315:                double dval;
        !           316:                }fpn; /* floating point node */
        !           317: 
        !           318:        };
        !           319: # endif
        !           320: # ifdef BUG2
        !           321: # define BUG1
        !           322: # endif
        !           323: # ifdef BUG3
        !           324: # define BUG2
        !           325: # define BUG1
        !           326: # endif
        !           327: # ifdef BUG4
        !           328: # define BUG1
        !           329: # define BUG2
        !           330: # define BUG3
        !           331: # endif
        !           332: # ifndef ONEPASS
        !           333: 
        !           334: # ifndef EXPR
        !           335: # define EXPR '.'
        !           336: # endif
        !           337: # ifndef BBEG
        !           338: # define BBEG '['
        !           339: # endif
        !           340: # ifndef BEND
        !           341: # define BEND ']'
        !           342: # endif
        !           343: 
        !           344: # endif

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.