|
|
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
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.