Annotation of 42BSD/ucb/pascal/src/pcops.h, revision 1.1

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 ) )

unix.superglobalmegacorp.com

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