63 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| /*
 | |
|  * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
 | |
|  * See the copyright notice in the ACK home directory, in the file "Copyright".
 | |
|  *
 | |
|  * Author: Ceriel J.H. Jacobs
 | |
|  */
 | |
| 
 | |
| /* 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 */
 | |
| 
 | |
| /* $Id$ */
 | |
| 
 | |
| struct node {
 | |
| 	char nd_class;		/* kind of node */
 | |
| #define Value	0		/* constant */
 | |
| #define Arrsel  1		/* array selection */
 | |
| #define Oper	2		/* binary operator */
 | |
| #define Uoper	3		/* unary operator */
 | |
| #define Arrow	4		/* ^ construction */
 | |
| #define Call	5		/* cast or procedure - or function call */
 | |
| #define Name	6		/* an identifier */
 | |
| #define Set	7		/* a set constant */
 | |
| #define Xset	8		/* a set */
 | |
| #define Def	9		/* an identified name */
 | |
| #define Stat	10		/* a statement */
 | |
| #define Select	11		/* a '.' selection */
 | |
| #define Link	12
 | |
| 				/* do NOT change the order or the numbers!!! */
 | |
| 	char nd_flags;		/* options */
 | |
| #define ROPTION	1
 | |
| #define AOPTION 2
 | |
| 	struct type *nd_type;	/* type of this node */
 | |
| 	struct token nd_token;
 | |
| #define nd_set		nd_token.tk_data.tk_set
 | |
| #define nd_def		nd_token.tk_data.tk_def
 | |
| #define nd_LEFT		nd_token.tk_data.tk_left
 | |
| #define nd_RIGHT	nd_token.tk_data.tk_right
 | |
| #define nd_NEXT		nd_token.tk_data.tk_next
 | |
| #define nd_symb		nd_token.tk_symb
 | |
| #define nd_lineno	nd_token.tk_lineno
 | |
| #define nd_IDF		nd_token.TOK_IDF
 | |
| #define nd_SSTR		nd_token.TOK_SSTR
 | |
| #define nd_STR		nd_token.TOK_STR
 | |
| #define nd_SLE		nd_token.TOK_SLE
 | |
| #define nd_INT		nd_token.TOK_INT
 | |
| #define nd_REAL		nd_token.TOK_REAL
 | |
| #define nd_RSTR		nd_token.TOK_RSTR
 | |
| #define nd_RVAL		nd_token.TOK_RVAL
 | |
| };
 | |
| 
 | |
| typedef struct node	t_node;
 | |
| 
 | |
| /* ALLOCDEF "node" 50 */
 | |
| 
 | |
| extern t_node *dot2node(), *dot2leaf(), *getnode();
 | |
| 
 | |
| #define NULLNODE ((t_node *) 0)
 | |
| 
 | |
| #define HASSELECTORS	002
 | |
| #define VARIABLE	004
 | |
| #define VALUE		010
 | |
| 
 | |
| #define	IsCast(lnd)	((lnd)->nd_class == Def && is_type((lnd)->nd_def))
 | |
| #define	IsProc(lnd)	((lnd)->nd_type->tp_fund == T_PROCEDURE)
 |