2 * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
3 * See the copyright notice in the ACK home directory, in the file "Copyright".
5 * Author: Ceriel J.H. Jacobs
8 /* N O D E O F A N A B S T R A C T P A R S E T R E E */
10 /* $Id: node.H,v 1.27 1994/06/24 12:41:51 ceriel Exp $ */
13 char nd_class; /* kind of node */
14 #define Value 0 /* constant */
15 #define Arrsel 1 /* array selection */
16 #define Oper 2 /* binary operator */
17 #define Uoper 3 /* unary operator */
18 #define Arrow 4 /* ^ construction */
19 #define Call 5 /* cast or procedure - or function call */
20 #define Name 6 /* an identifier */
21 #define Set 7 /* a set constant */
22 #define Xset 8 /* a set */
23 #define Def 9 /* an identified name */
24 #define Stat 10 /* a statement */
25 #define Select 11 /* a '.' selection */
27 /* do NOT change the order or the numbers!!! */
28 char nd_flags; /* options */
31 struct type *nd_type; /* type of this node */
32 struct token nd_token;
33 #define nd_set nd_token.tk_data.tk_set
34 #define nd_def nd_token.tk_data.tk_def
35 #define nd_LEFT nd_token.tk_data.tk_left
36 #define nd_RIGHT nd_token.tk_data.tk_right
37 #define nd_NEXT nd_token.tk_data.tk_next
38 #define nd_symb nd_token.tk_symb
39 #define nd_lineno nd_token.tk_lineno
40 #define nd_IDF nd_token.TOK_IDF
41 #define nd_SSTR nd_token.TOK_SSTR
42 #define nd_STR nd_token.TOK_STR
43 #define nd_SLE nd_token.TOK_SLE
44 #define nd_INT nd_token.TOK_INT
45 #define nd_REAL nd_token.TOK_REAL
46 #define nd_RSTR nd_token.TOK_RSTR
47 #define nd_RVAL nd_token.TOK_RVAL
50 typedef struct node t_node;
52 /* ALLOCDEF "node" 50 */
54 extern t_node *dot2node(), *dot2leaf(), *getnode();
56 #define NULLNODE ((t_node *) 0)
58 #define HASSELECTORS 002
62 #define IsCast(lnd) ((lnd)->nd_class == Def && is_type((lnd)->nd_def))
63 #define IsProc(lnd) ((lnd)->nd_type->tp_fund == T_PROCEDURE)