1 /* $Id: expr.h,v 1.7 1994/06/24 12:26:58 ceriel Exp $ */
3 * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
4 * See the copyright notice in the ACK home directory, in the file "Copyright".
7 #define E_VAR 1 /* Variable *or* channel */
23 struct expr_list *next;
34 struct expr *left, *right;
46 struct expr_list *args;
51 struct expr_list *c_args;
56 struct expr *new_node(), *new_var(), *new_const(), *new_table(), *new_now();
57 struct expr *new_io(), *new_call(), *copy_const();
58 void table_add(), expr_list_add();
59 void check_param(), check_io(), check_wait();
60 void destroy(), used();
62 #define valueless(e) (((e)->type&T_TYPE)==T_VOID)
63 #define valued(e) (((e)->type&T_TYPE)==T_VALUE)
64 #define input_process(e) ((e)->kind==E_IO && !(e)->u.io.out)
65 #define constant(e) ((e)->kind==E_CONST)
66 #define arr_constant(e) ((e)->kind==E_TABLE || (e)->kind==E_BTAB)