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