ack/util/grind/tree.hh

38 lines
793 B
C++

/* $Id$ */
#define MAXARGS 3
typedef struct tree {
short t_oper; /* tree operator */
short t_whichoper; /* expression operator */
t_addr t_address; /* some operators use an address */
union {
long tt_ival;
char *tt_sval;
double tt_fval;
struct {
struct idf *tt_idf;
char *tt_str;
} tt_x;
struct tree *tt_args[MAXARGS];
t_position tt_pos;
} t_xxxx;
#define t_ival t_xxxx.tt_ival
#define t_sval t_xxxx.tt_sval
#define t_fval t_xxxx.tt_fval
#define t_idf t_xxxx.tt_x.tt_idf
#define t_str t_xxxx.tt_x.tt_str
#define t_args t_xxxx.tt_args
#define t_lino t_xxxx.tt_pos.lineno
#define t_filename t_xxxx.tt_pos.filename
#define t_pos t_xxxx.tt_pos
} t_tree, *p_tree;
/* ALLOCDEF "tree" 100 */
#if __STDC__
extern p_tree mknode(int, ...);
#else
extern p_tree mknode();
#endif