Annotation of researchv9/cmd/sun/mip/mip.h, revision 1.1

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

unix.superglobalmegacorp.com

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