1*739Speter /* Copyright (c) 1979 Regents of the University of California */ 2*739Speter 3*739Speter /* static char sccsid[] = "@(#)pcops.h 1.1 08/27/80"; */ 4*739Speter 5*739Speter /* 6*739Speter * tree node operators 7*739Speter */ 8*739Speter #define P2UNDEFINED 1 9*739Speter #define P2NAME 2 10*739Speter #define P2STRING 3 11*739Speter #define P2ICON 4 12*739Speter #define P2FCON 5 13*739Speter #define P2PLUS 6 14*739Speter #define P2MINUS 8 /* also unary == P2NEG */ 15*739Speter #define P2MUL 11 /* also unary == P2INDIRECT */ 16*739Speter #define P2AND 14 /* also unary */ 17*739Speter #define P2OR 17 18*739Speter #define P2ER 19 19*739Speter #define P2QUEST 21 20*739Speter #define P2COLON 22 21*739Speter #define P2ANDAND 23 22*739Speter #define P2OROR 24 23*739Speter /* 24*739Speter * yacc operator classes, reserved words, little symbols, etc. 25*739Speter * operators 25 .. 57 not used, except 56 26*739Speter */ 27*739Speter #define P2LISTOP 56 28*739Speter #define P2ASSIGN 58 29*739Speter #define P2COMOP 59 30*739Speter #define P2DIV 60 31*739Speter #define P2MOD 62 32*739Speter #define P2LS 64 33*739Speter #define P2RS 66 34*739Speter #define P2DOT 68 35*739Speter #define P2STREF 69 36*739Speter #define P2CALL 70 /* also unary */ 37*739Speter #define P2FORTCALL 73 /* also unary */ 38*739Speter #define P2NOT 76 39*739Speter #define P2COMPL 77 40*739Speter #define P2INCR 78 41*739Speter #define P2DECR 79 42*739Speter #define P2EQ 80 43*739Speter #define P2NE 81 44*739Speter #define P2LE 82 45*739Speter #define P2LT 83 46*739Speter #define P2GE 84 47*739Speter #define P2GT 85 48*739Speter #define P2ULE 86 49*739Speter #define P2ULT 87 50*739Speter #define P2UGE 88 51*739Speter #define P2UGT 89 52*739Speter #define P2SETBIT 90 53*739Speter #define P2TESTBIT 91 54*739Speter #define P2RESETBIT 92 55*739Speter #define P2ARS 93 56*739Speter #define P2REG 94 57*739Speter #define P2OREG 95 58*739Speter #define P2CCODES 96 59*739Speter #define P2FREE 97 60*739Speter #define P2STASG 98 61*739Speter #define P2STARG 99 62*739Speter #define P2STCALL 100 /* also unary */ 63*739Speter 64*739Speter /* 65*739Speter * some conversion operators 66*739Speter */ 67*739Speter #define P2FLD 103 68*739Speter #define P2SCONV 104 69*739Speter #define P2PCONV 105 70*739Speter #define P2PMCONV 106 71*739Speter #define P2PVCONV 107 72*739Speter 73*739Speter /* 74*739Speter * special node operators, used for special contexts 75*739Speter */ 76*739Speter #define P2FORCE 108 77*739Speter #define P2CBRANCH 109 78*739Speter #define P2INIT 110 79*739Speter #define P2CAST 111 80*739Speter 81*739Speter /* 82*739Speter * prefix unary operator modifier 83*739Speter */ 84*739Speter #define P2ASG 1+ 85*739Speter #define P2UNARY 2+ 86*739Speter 87*739Speter /* 88*739Speter * these borrowed from /usr/src/cmd/mip/fort.c 89*739Speter * to use the binary interface. 90*739Speter * only FTEXT, FEXPR, FLBRAC, FRBRAC, and FEOF are used 91*739Speter */ 92*739Speter #define P2FTEXT 200 93*739Speter #define P2FEXPR 201 94*739Speter #define P2FLBRAC 203 95*739Speter #define P2FRBRAC 204 96*739Speter #define P2FEOF 205 97*739Speter 98*739Speter /* 99*739Speter * type names 100*739Speter */ 101*739Speter #define P2UNDEF 0 102*739Speter #define P2FARG 1 103*739Speter #define P2CHAR 2 104*739Speter #define P2SHORT 3 105*739Speter #define P2INT 4 /* this is also used for booleans */ 106*739Speter #define P2LONG 5 /* don't use these, the second pass chokes */ 107*739Speter #define P2FLOAT 6 108*739Speter #define P2DOUBLE 7 109*739Speter #define P2STRTY 8 110*739Speter #define P2UNIONTY 9 111*739Speter #define P2ENUMTY 10 112*739Speter #define P2MOETY 11 113*739Speter #define P2UCHAR 12 114*739Speter #define P2USHORT 13 115*739Speter #define P2UNSIGNED 14 116*739Speter #define P2ULONG 15 117*739Speter 118*739Speter /* 119*739Speter * type modifiers 120*739Speter */ 121*739Speter #define P2PTR 020 122*739Speter #define P2FTN 040 123*739Speter #define P2ARY 060 124*739Speter 125*739Speter /* 126*739Speter * see the comment for p2type for an explanation of c type words 127*739Speter */ 128*739Speter #define P2BASETYPE 017 129*739Speter #define P2TYPESHIFT 2 130*739Speter 131*739Speter /* 132*739Speter * add a most significant type modifier, m, to a type, t 133*739Speter */ 134*739Speter #define ADDTYPE( t,m ) ( ( ( ( t ) & ~P2BASETYPE ) << P2TYPESHIFT ) \ 135*739Speter | ( m ) \ 136*739Speter | ( ( t ) & P2BASETYPE ) ) 137*739Speter 138*739Speter /* 139*739Speter * the runtime framepointer and argumentpointer registers 140*739Speter */ 141*739Speter #define P2FP 13 142*739Speter #define P2FPNAME "fp" 143*739Speter #define P2AP 12 144*739Speter #define P2APNAME "ap" 145