Pristine Ack-5.5
[Ack-5.5.git] / util / grind / tree.hh
1 /* $Id: tree.hh,v 1.6 1995/08/17 14:32:59 ceriel Exp $ */
2
3 #define MAXARGS 3
4
5 typedef struct tree {
6   short t_oper;         /* tree operator */
7   short t_whichoper;    /* expression operator */
8   t_addr t_address;     /* some operators use an address */
9   union {
10         long tt_ival;
11         char *tt_sval;
12         double tt_fval;
13         struct {
14                 struct idf *tt_idf;
15                 char *tt_str;
16         } tt_x;
17         struct tree *tt_args[MAXARGS];
18         t_position tt_pos;
19   } t_xxxx;
20 #define t_ival  t_xxxx.tt_ival
21 #define t_sval  t_xxxx.tt_sval
22 #define t_fval  t_xxxx.tt_fval
23 #define t_idf   t_xxxx.tt_x.tt_idf
24 #define t_str   t_xxxx.tt_x.tt_str
25 #define t_args  t_xxxx.tt_args
26 #define t_lino t_xxxx.tt_pos.lineno
27 #define t_filename t_xxxx.tt_pos.filename
28 #define t_pos   t_xxxx.tt_pos
29 } t_tree, *p_tree;
30
31 /* ALLOCDEF "tree" 100 */
32
33 #if __STDC__
34 extern p_tree   mknode(int, ...);
35 #else
36 extern p_tree   mknode();
37 #endif