Annotation of 41BSD/cmd/pi/pcops.h, revision 1.1.1.1

1.1       root        1: /* Copyright (c) 1979 Regents of the University of California */
                      2: 
                      3: /* static      char sccsid[] = "@(#)pcops.h 1.1 8/27/80"; */
                      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 ) )
                    137: 
                    138:     /*
                    139:      * the runtime framepointer and argumentpointer registers
                    140:      */
                    141: #define        P2FP            13
                    142: #define        P2FPNAME        "fp"
                    143: #define        P2AP            12
                    144: #define P2APNAME       "ap"

unix.superglobalmegacorp.com

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