Annotation of 43BSD/ucb/pascal/src/tree_ty.h, revision 1.1.1.1

1.1       root        1: /*
                      2:  * Copyright (c) 1980 Regents of the University of California.
                      3:  * All rights reserved.  The Berkeley software License Agreement
                      4:  * specifies the terms and conditions for redistribution.
                      5:  *
                      6:  *     @(#)tree_ty.h   5.1 (Berkeley) 6/5/85
                      7:  */
                      8: 
                      9: typedef struct /* T_FORU, T_FORD */
                     10: {
                     11:     int                line_no;        /* line number of for */
                     12:     struct     tnode   *init_asg;      /* initialization */
                     13:     struct     tnode   *term_expr;     /* termination expresssion */
                     14:     struct     tnode   *for_stmnt;     /* for statement */
                     15: } FOR_NODE;
                     16: typedef struct  /* T_ASGN */
                     17: {
                     18:     int                line_no;        /* line number of := */
                     19:     struct     tnode   *lhs_var;
                     20:     struct     tnode   *rhs_expr;
                     21: } ASG_NODE;
                     22: #ifndef PTREE
                     23: typedef struct                         /* T_VAR */
                     24: {
                     25:     int                line_no;
                     26:     char               *cptr;
                     27:     struct tnode       *qual;          /* list node */
                     28: } VAR_NODE;
                     29: typedef struct         /* T_FIELD */
                     30: {
                     31:     char               *id_ptr;
                     32:     struct tnode       *other;         
                     33: } FIELD_NODE;
                     34: #else
                     35: typedef struct                         /* T_VAR */
                     36: {
                     37:     int                line_no;
                     38:     char               *cptr;
                     39:     struct tnode       *qual;
                     40:     struct nl          *nl_entry;
                     41: } VAR_NODE;
                     42: typedef struct         /* T_FIELD */
                     43: {
                     44:     char               *id_ptr;
                     45:     struct tnode       *other;         
                     46:     struct nl          *nl_entry;
                     47: } FIELD_NODE;
                     48: #endif
                     49: typedef struct                         /* T_MOD, T_MULT, T_DIVD, T_DIV,
                     50:                                           T_AND, T_ADD, T_SUB, T_OR,
                     51:                                           T_EQ, T_LT, T_GT, T_NE, T_LE
                     52:                                           T_GE, T_IN */
                     53: {
                     54:     int                const_tag;
                     55:     struct     tnode   *lhs;
                     56:     struct     tnode   *rhs;
                     57: } EXPR_NODE;
                     58: typedef struct                 /* T_LISTPP */
                     59: {
                     60:     struct tnode *list;  /* check the types on these,
                     61:                            this is used in pclvalue and lvalue */
                     62:     struct tnode *next;
                     63: } LIST_NODE;
                     64: typedef struct                 /* T_IF, T_IFEL, T_IFX */
                     65: {
                     66:     int           line_no;
                     67:     struct tnode *cond_expr;
                     68:     struct tnode *then_stmnt;
                     69:     struct tnode *else_stmnt;
                     70: } IF_NODE;
                     71: typedef struct                 /* T_MINUS, T_PLUS, T_NOT */
                     72: {
                     73:     int                const_tag;
                     74:     struct tnode       *expr;
                     75: } UN_EXPR;
                     76: typedef struct /* T_PDEC, T_FDEC, T_PROG */
                     77: {
                     78:     int        line_no;
                     79:     char       *id_ptr;
                     80:     struct tnode       *param_list;
                     81:     struct tnode       *type;
                     82: } P_DEC;
                     83: typedef struct /* T_PVAL, T_PVAR */
                     84: {
                     85:     struct tnode       *id_list;
                     86:     struct tnode       *type;
                     87: } PARAM;
                     88: typedef struct         /* T_PFUNC, T_PPROC */
                     89: {
                     90:     struct tnode       *id_list,
                     91:                        *type,
                     92:                        *param_list;
                     93:     int                        line_no;
                     94: } PFUNC_NODE;
                     95: typedef struct         /* T_NIL */
                     96: {
                     97:     int        const_tag;
                     98: } NIL_NODE;
                     99: typedef struct         /* T_STRNG, T_INT, T_FINT, T_BINT */
                    100: {
                    101:     int                const_tag;
                    102:     char       *cptr;
                    103: } CONST_NODE;
                    104: typedef struct         /* T_CSTRNG, T_ID, T_CFINT, T_CINT, T_CBINT */
                    105: {
                    106:     char       *cptr;
                    107: } CHAR_CONST;
                    108: typedef struct         /* T_PLUSC, T_MINUSC */
                    109: {
                    110:     struct tnode       *number;
                    111: } SIGN_CONST;
                    112: #ifdef PTREE
                    113: typedef struct
                    114: {
                    115:     int        line_no
                    116:     struct tnode       *type;
                    117:     struct nl          *nl_entry;
                    118: } COMP_TY;
                    119: #else
                    120: typedef struct         /* T_TYPACK, T_TYSCAL, T_TYFILE, T_TYSET, T_TYREC */
                    121: {
                    122:     int                  line_no;
                    123:     struct tnode *type;
                    124: } COMP_TY;
                    125: #endif
                    126: typedef struct         /* T_TYPTR */
                    127: {
                    128:     int                         line_no;
                    129:     struct tnode       *id_node;
                    130: } PTR_TY;
                    131: typedef struct         /* T_TYRANG */
                    132: {
                    133:     int                         line_no;
                    134:     struct tnode       *const1;
                    135:     struct tnode       *const2;
                    136: } RANG_TY;
                    137: typedef struct         /* T_TYCRANG */
                    138: {
                    139:     int                         line_no;
                    140:     struct tnode       *lwb_var;
                    141:     struct tnode       *upb_var;
                    142:     struct tnode       *type;
                    143: } CRANG_TY;
                    144: typedef struct         /* T_TYARY, T_TYCARY */
                    145: {
                    146:     int                         line_no;
                    147:     struct tnode       *type_list;
                    148:     struct tnode       *type;
                    149: } ARY_TY;
                    150: typedef struct         /* T_TYVARNT */
                    151: {
                    152:     int                 line_no;
                    153:     struct tnode       *const_list;
                    154:     struct tnode       *fld_list;
                    155: } TYVARNT;
                    156: typedef struct         /* T_TYVARPT */
                    157: {
                    158:     int                         line_no;
                    159:     char               *cptr;
                    160:     struct tnode       *type_id;
                    161:     struct tnode       *var_list;
                    162: } VARPT;
                    163: typedef struct         /* T_CSTAT */
                    164: {
                    165:     int                 line_no;
                    166:     struct tnode       *const_list;
                    167:     struct tnode       *stmnt;
                    168: } C_STMNT;
                    169: typedef struct         /* T_BSTL, T_BLOCK */
                    170: {
                    171:     int                        line_no;
                    172:     struct tnode       *stmnt_list;
                    173: } STMNT_BLCK;
                    174: typedef struct         /* T_FLDLST */
                    175: {
                    176:     int                line_no;
                    177:     struct tnode       *fix_list;
                    178:     struct tnode       *variant;
                    179: } FLDLST;
                    180: typedef struct         /* T_RFIELD */
                    181: {
                    182:     int                        line_no;
                    183:     struct tnode       *id_list;
                    184:     struct tnode       *type;
                    185: } RFIELD;
                    186: typedef struct         /* T_LABEL */
                    187: {
                    188:     int                line_no;
                    189:     char               *lbl_ptr;
                    190:     struct tnode       *stmnt;
                    191: } LABEL_NODE;
                    192: typedef struct         /* T_GOTO */
                    193: {
                    194:     int                line_no;
                    195:     char       *lbl_ptr;
                    196: } GOTO_NODE;
                    197: typedef struct         /* T_PCALL, T_FCALL */
                    198: {
                    199:     int                        line_no;
                    200:     char               *proc_id;
                    201:     struct tnode       *arg;
                    202: } PCALL_NODE;
                    203: typedef struct         /* T_CASE, T_WHILE */
                    204: {
                    205:     int                        line_no;
                    206:     struct tnode       *expr;
                    207:     struct tnode       *stmnt_list;
                    208: } WHI_CAS;
                    209: typedef struct         /* T_WITH */
                    210: {
                    211:     int                        line_no;
                    212:     struct tnode       *var_list;
                    213:     struct tnode       *stmnt;
                    214: } WITH_NODE;
                    215: typedef struct         /* T_REPEAT */
                    216: {
                    217:     int                        line_no;
                    218:     struct tnode       *stmnt_list;
                    219:     struct tnode       *term_expr;
                    220: } REPEAT;
                    221: typedef struct         /* T_RANG */
                    222: {
                    223:     struct tnode       *expr1;
                    224:     struct tnode       *expr2;
                    225: } RANG;
                    226: typedef struct         /* T_CSET */
                    227: {
                    228:     int                        const_tag;
                    229:     struct tnode       *el_list;
                    230: } CSET_NODE;
                    231: typedef struct         /* T_ARY */
                    232: {
                    233:     struct tnode       *expr_list;
                    234: } ARY_NODE;
                    235: typedef struct         /* T_WEXPR */
                    236: {
                    237:     struct tnode       *expr1;
                    238:     struct tnode       *expr2;
                    239:     struct tnode       *expr3;
                    240: } WEXPR_NODE;
                    241: typedef struct         /* T_TYID */
                    242: {
                    243:     int                        line_no;
                    244:     char               *idptr;
                    245: } TYID_NODE;
                    246: typedef struct         /* anything with linenumber in first field */
                    247: {
                    248:     int                        line_no;
                    249: } LINED;
                    250: 
                    251: struct tnode
                    252: {
                    253:     int tag;
                    254:     union
                    255:     {
                    256:        FOR_NODE        t_for_node;     
                    257:        ASG_NODE        t_asg_node;
                    258:        VAR_NODE        t_var_node;
                    259:        EXPR_NODE       t_expr_node;
                    260:        LIST_NODE       t_list_node;
                    261:        IF_NODE         t_if_node;
                    262:        UN_EXPR         t_un_expr;
                    263:        P_DEC           t_p_dec;
                    264:        PARAM           t_param;
                    265:        PFUNC_NODE      t_pfunc_node;
                    266:        NIL_NODE        t_nil_node;
                    267:        CONST_NODE      t_const_node;
                    268:        CHAR_CONST      t_char_const;
                    269:        SIGN_CONST      t_sign_const;
                    270:        COMP_TY         t_comp_ty;
                    271:        PTR_TY          t_ptr_ty;
                    272:        RANG_TY         t_rang_ty;
                    273:        CRANG_TY        t_crang_ty;
                    274:        ARY_TY          t_ary_ty;
                    275:        VARPT           t_varpt;
                    276:        TYVARNT         t_tyvarnt;
                    277:        C_STMNT         t_c_stmnt;
                    278:        STMNT_BLCK      t_stmnt_blck;
                    279:        FLDLST          t_fldlst;
                    280:        RFIELD          t_rfield;
                    281:        LABEL_NODE      t_label_node;
                    282:        PCALL_NODE      t_pcall_node;
                    283:        WHI_CAS         t_whi_cas;
                    284:        WITH_NODE       t_with_node;
                    285:        REPEAT          t_repeat;
                    286:        RANG            t_rang;
                    287:        CSET_NODE       t_cset_node;
                    288:        ARY_NODE        t_ary_node;
                    289:        WEXPR_NODE      t_wexpr_node;
                    290:        FIELD_NODE      t_field_node;
                    291:        TYID_NODE       t_tyid_node;
                    292:        LINED           t_lined;
                    293:        GOTO_NODE       t_goto_node;
                    294:     } tree_ele;
                    295: };
                    296: 
                    297: #define        for_node                tree_ele.t_for_node     
                    298: #define        asg_node                tree_ele.t_asg_node
                    299: #define        var_node                tree_ele.t_var_node
                    300: #define        expr_node               tree_ele.t_expr_node
                    301: #define        list_node tree_ele.t_list_node
                    302: #define        if_node                 tree_ele.t_if_node
                    303: #define        un_expr                 tree_ele.t_un_expr
                    304: #define        p_dec                   tree_ele.t_p_dec
                    305: #define        param                   tree_ele.t_param
                    306: #define        pfunc_node              tree_ele.t_pfunc_node
                    307: #define        nil_node                tree_ele.t_nil_node
                    308: #define        const_node              tree_ele.t_const_node
                    309: #define        char_const              tree_ele.t_char_const
                    310: #define        sign_const              tree_ele.t_sign_const
                    311: #define        comp_ty                 tree_ele.t_comp_ty
                    312: #define        ptr_ty                  tree_ele.t_ptr_ty
                    313: #define        rang_ty                 tree_ele.t_rang_ty
                    314: #define        crang_ty                tree_ele.t_crang_ty
                    315: #define        ary_ty                  tree_ele.t_ary_ty
                    316: #define        varpt                   tree_ele.t_varpt
                    317: #define        tyvarnt                 tree_ele.t_tyvarnt
                    318: #define        c_stmnt                 tree_ele.t_c_stmnt
                    319: #define        stmnt_blck              tree_ele.t_stmnt_blck
                    320: #define        fldlst                  tree_ele.t_fldlst
                    321: #define        rfield                  tree_ele.t_rfield
                    322: #define        label_node              tree_ele.t_label_node
                    323: #define        pcall_node              tree_ele.t_pcall_node
                    324: #define        whi_cas                 tree_ele.t_whi_cas
                    325: #define        with_node               tree_ele.t_with_node
                    326: #define        repeat                  tree_ele.t_repeat
                    327: #define        rang                    tree_ele.t_rang
                    328: #define        cset_node               tree_ele.t_cset_node
                    329: #define        ary_node                tree_ele.t_ary_node
                    330: #define        wexpr_node              tree_ele.t_wexpr_node
                    331: #define        field_node              tree_ele.t_field_node
                    332: #define        tyid_node               tree_ele.t_tyid_node
                    333: #define        lined                   tree_ele.t_lined
                    334: #define        goto_node               tree_ele.t_goto_node

unix.superglobalmegacorp.com

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