1739Speter /* Copyright (c) 1979 Regents of the University of California */ 2739Speter 3*15995Saoki /* static char sccsid[] = "@(#)pcops.h 2.1 02/08/84"; */ 4739Speter 5739Speter /* 6739Speter * tree node operators 7739Speter */ 8739Speter #define P2UNDEFINED 1 9739Speter #define P2NAME 2 10739Speter #define P2STRING 3 11739Speter #define P2ICON 4 12739Speter #define P2FCON 5 13739Speter #define P2PLUS 6 14739Speter #define P2MINUS 8 /* also unary == P2NEG */ 15739Speter #define P2MUL 11 /* also unary == P2INDIRECT */ 16739Speter #define P2AND 14 /* also unary */ 17739Speter #define P2OR 17 18739Speter #define P2ER 19 19739Speter #define P2QUEST 21 20739Speter #define P2COLON 22 21739Speter #define P2ANDAND 23 22739Speter #define P2OROR 24 23739Speter /* 24739Speter * yacc operator classes, reserved words, little symbols, etc. 25739Speter * operators 25 .. 57 not used, except 56 26739Speter */ 27739Speter #define P2LISTOP 56 28739Speter #define P2ASSIGN 58 29739Speter #define P2COMOP 59 30739Speter #define P2DIV 60 31739Speter #define P2MOD 62 32739Speter #define P2LS 64 33739Speter #define P2RS 66 34739Speter #define P2DOT 68 35739Speter #define P2STREF 69 36739Speter #define P2CALL 70 /* also unary */ 37739Speter #define P2FORTCALL 73 /* also unary */ 38739Speter #define P2NOT 76 39739Speter #define P2COMPL 77 40739Speter #define P2INCR 78 41739Speter #define P2DECR 79 42739Speter #define P2EQ 80 43739Speter #define P2NE 81 44739Speter #define P2LE 82 45739Speter #define P2LT 83 46739Speter #define P2GE 84 47739Speter #define P2GT 85 48739Speter #define P2ULE 86 49739Speter #define P2ULT 87 50739Speter #define P2UGE 88 51739Speter #define P2UGT 89 52739Speter #define P2SETBIT 90 53739Speter #define P2TESTBIT 91 54739Speter #define P2RESETBIT 92 55739Speter #define P2ARS 93 56739Speter #define P2REG 94 57739Speter #define P2OREG 95 58739Speter #define P2CCODES 96 59739Speter #define P2FREE 97 60739Speter #define P2STASG 98 61739Speter #define P2STARG 99 62739Speter #define P2STCALL 100 /* also unary */ 63739Speter 64739Speter /* 65739Speter * some conversion operators 66739Speter */ 67739Speter #define P2FLD 103 68739Speter #define P2SCONV 104 69739Speter #define P2PCONV 105 70739Speter #define P2PMCONV 106 71739Speter #define P2PVCONV 107 72739Speter 73739Speter /* 74739Speter * special node operators, used for special contexts 75739Speter */ 76739Speter #define P2FORCE 108 77739Speter #define P2CBRANCH 109 78739Speter #define P2INIT 110 79739Speter #define P2CAST 111 80739Speter 81739Speter /* 82739Speter * prefix unary operator modifier 83739Speter */ 84739Speter #define P2ASG 1+ 85739Speter #define P2UNARY 2+ 86739Speter 87739Speter /* 88739Speter * these borrowed from /usr/src/cmd/mip/fort.c 89739Speter * to use the binary interface. 90739Speter * only FTEXT, FEXPR, FLBRAC, FRBRAC, and FEOF are used 91739Speter */ 92739Speter #define P2FTEXT 200 93739Speter #define P2FEXPR 201 94739Speter #define P2FLBRAC 203 95739Speter #define P2FRBRAC 204 96739Speter #define P2FEOF 205 97739Speter 98739Speter /* 99739Speter * type names 100739Speter */ 101739Speter #define P2UNDEF 0 102739Speter #define P2FARG 1 103739Speter #define P2CHAR 2 104739Speter #define P2SHORT 3 105739Speter #define P2INT 4 /* this is also used for booleans */ 106739Speter #define P2LONG 5 /* don't use these, the second pass chokes */ 107739Speter #define P2FLOAT 6 108739Speter #define P2DOUBLE 7 109739Speter #define P2STRTY 8 110739Speter #define P2UNIONTY 9 111739Speter #define P2ENUMTY 10 112739Speter #define P2MOETY 11 113739Speter #define P2UCHAR 12 114739Speter #define P2USHORT 13 115739Speter #define P2UNSIGNED 14 116739Speter #define P2ULONG 15 117739Speter 118739Speter /* 119739Speter * type modifiers 120739Speter */ 121739Speter #define P2PTR 020 122739Speter #define P2FTN 040 123739Speter #define P2ARY 060 124739Speter 125739Speter /* 126739Speter * see the comment for p2type for an explanation of c type words 127739Speter */ 128739Speter #define P2BASETYPE 017 129739Speter #define P2TYPESHIFT 2 130739Speter 131739Speter /* 132739Speter * add a most significant type modifier, m, to a type, t 133739Speter */ 134739Speter #define ADDTYPE( t,m ) ( ( ( ( t ) & ~P2BASETYPE ) << P2TYPESHIFT ) \ 135739Speter | ( m ) \ 136739Speter | ( ( t ) & P2BASETYPE ) ) 137