Annotation of 43BSD/ucb/pascal/src/tree_ty.h, revision 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.