ack/lang/m2/comp/node.H

44 lines
1.1 KiB
C++
Raw Normal View History

1986-04-06 17:42:56 +00:00
/* 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 */
/* $Header$ */
struct node {
struct node *next;
#define nd_left next
struct node *nd_right;
int nd_class; /* kind of node */
1986-04-08 18:15:46 +00:00
#define Value 1 /* constant */
1986-04-06 17:42:56 +00:00
#define Oper 2 /* binary operator */
#define Uoper 3 /* unary operator */
#define Call 4 /* cast or procedure - or function call */
1986-04-09 18:14:49 +00:00
#define Name 5 /* an identifier */
1986-04-08 18:15:46 +00:00
#define Set 6 /* a set constant */
#define Xset 7 /* a set */
#define Def 8 /* an identified name */
1986-04-09 18:14:49 +00:00
#define Stat 9 /* a statement */
1986-04-08 18:15:46 +00:00
#define Link 11
1986-04-06 17:42:56 +00:00
struct type *nd_type; /* type of this node */
1986-04-09 18:14:49 +00:00
struct token nd_token;
#define nd_set nd_token.tk_data.tk_set
#define nd_def nd_token.tk_data.tk_def
1986-04-06 17:42:56 +00:00
#define nd_symb nd_token.tk_symb
#define nd_lineno nd_token.tk_lineno
#define nd_filename nd_token.tk_filename
#define nd_IDF nd_token.TOK_IDF
#define nd_STR nd_token.TOK_STR
#define nd_SLE nd_token.TOK_SLE
#define nd_INT nd_token.TOK_INT
#define nd_REL nd_token.TOK_REL
};
/* ALLOCDEF "node" */
extern struct node *MkNode();
#define NULLNODE ((struct node *) 0)
1986-04-25 10:14:08 +00:00
1986-04-23 22:12:22 +00:00
#define DESIGNATOR 1
1986-04-25 10:14:08 +00:00
#define HASSELECTORS 2
#define VARIABLE 4
#define VALUE 8