73 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			73 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
 | |
|  * See the copyright notice in the ACK home directory, in the file "Copyright".
 | |
|  */
 | |
| /* $Header$ */
 | |
| /* D E F I N I T I O N S   F O R   T H E   L E X I C A L   A N A L Y Z E R */
 | |
| 
 | |
| /*	A token from the input stream is represented by an integer,
 | |
| 	called a "symbol", but it may have other information associated
 | |
| 	to it.
 | |
| */
 | |
| 
 | |
| #include "nofloat.h"
 | |
| #include "file_info.h"
 | |
| #include "nopp.h"
 | |
| 
 | |
| /* the structure of a token:	*/
 | |
| struct token	{
 | |
| 	int tok_symb;		/* the token itself */
 | |
| 	char *tok_file;		/* the file it (probably) comes from */
 | |
| 	unsigned int tok_line;	/* the line it (probably) comes from */
 | |
| 	union	{
 | |
| 		struct idf *tok_idf;	/* for IDENTIFIER & TYPE_IDENTIFIER */
 | |
| 		struct	{		/* for STRING */
 | |
| 			char *tok_bts;	/* row of bytes	*/
 | |
| 			int tok_len;	/* length of row of bytes */
 | |
| 		} tok_string;
 | |
| 		struct	{		/* for INTEGER */
 | |
| 			int tok_fund;	/* INT or LONG */
 | |
| 			arith tok_ival;
 | |
| 		} tok_integer;
 | |
| #ifndef NOFLOAT
 | |
| 		char *tok_fval;
 | |
| #endif /* NOFLOAT */
 | |
| 	} tok_data;
 | |
| };
 | |
| 
 | |
| #define tk_symb	tok_symb
 | |
| #define tk_file	tok_file
 | |
| #define tk_line	tok_line
 | |
| #define tk_idf	tok_data.tok_idf
 | |
| #define tk_bts	tok_data.tok_string.tok_bts
 | |
| #define tk_len	tok_data.tok_string.tok_len
 | |
| #define tk_fund	tok_data.tok_integer.tok_fund
 | |
| #define tk_ival	tok_data.tok_integer.tok_ival
 | |
| #ifndef NOFLOAT
 | |
| #define tk_fval	tok_data.tok_fval
 | |
| #endif /* NOFLOAT */
 | |
| 
 | |
| extern struct token dot, ahead, aside;
 | |
| extern int token_nmb;			/* number of the ahead token */
 | |
| extern int tk_nmb_at_last_syn_err;	/* token number at last syntax error */
 | |
| 
 | |
| #ifndef NOPP
 | |
| extern int ReplaceMacros;	/* "LLlex.c"	*/
 | |
| extern int AccDefined;		/* "LLlex.c"	*/
 | |
| extern int Unstacked;		/* "LLlex.c"	*/
 | |
| extern int UnknownIdIsZero;	/* "LLlex.c"	*/
 | |
| #endif /* NOPP */
 | |
| extern int EoiForNewline;	/* "LLlex.c"	*/
 | |
| extern int AccFileSpecifier;	/* "LLlex.c"	*/
 | |
| extern int SkipEscNewline;	/* "LLlex.c"	*/
 | |
| extern int File_Inserted;	/* "LLlex.c"	*/
 | |
| 
 | |
| extern int NoUnstack;		/* buffer.c	*/
 | |
| 
 | |
| extern int err_occurred;	/* "error.c"	*/
 | |
| 
 | |
| #define	DOT	dot.tk_symb
 | |
| #define	AHEAD	ahead.tk_symb
 | |
| #define	ASIDE	aside.tk_symb
 | |
| 
 | |
| #define EOF	(-1)
 |