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