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

Defined struct's

tnode defined in line 251; used 361 times

Defined macros

char_const defined in line 309; used 13 times
comp_ty defined in line 311; used 6 times
cset_node defined in line 328; used 14 times
expr_node defined in line 300; used 51 times
for_node defined in line 297; used 1 times
goto_node defined in line 334; used 1 times
label_node defined in line 322; used 2 times
list_node defined in line 301; used 255 times
nil_node defined in line 307; never used
p_dec defined in line 304; used 19 times
pfunc_node defined in line 306; used 3 times
ptr_ty defined in line 312; used 1 times
rang defined in line 327; used 14 times
rang_ty defined in line 313; used 2 times
repeat defined in line 326; used 1 times
rfield defined in line 321; used 3 times
sign_const defined in line 310; used 6 times
tyid_node defined in line 332; used 1 times
tyvarnt defined in line 317; used 3 times
varpt defined in line 316; used 4 times
wexpr_node defined in line 330; used 21 times
whi_cas defined in line 324; used 3 times
with_node defined in line 325; used 1 times

Usage of this include

tree_ty.h used 45 times
Last modified: 1985-06-06
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 3277
Valid CSS Valid XHTML 1.0 Strict