40 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			40 lines
		
	
	
	
		
			1.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".
 | |
|  */
 | |
| #
 | |
| 
 | |
| #ifndef NORCSID
 | |
| # define RCS_GRAPH	"$Header$"
 | |
| #endif
 | |
| 
 | |
| /* 
 | |
| ** The control graph is represented by a multi-list structure.
 | |
| ** The em code is stored on the em intermediate file already
 | |
| ** The offset and length is saved only.
 | |
| ** Although this makes code generation mode involved, it allows
 | |
| ** rather large BASIC programs to be processed.
 | |
| */
 | |
| typedef struct LIST {
 | |
| 	int	emlabel;		/* em label used with forwards */
 | |
| 	int	linenr;			/* BASIC line number */
 | |
| 	struct LIST *nextlist;
 | |
| } List;
 | |
| 
 | |
| typedef struct LINERECORD{
 | |
| 	int	emlabel;		/* target label */
 | |
| 	int	linenr;			/* BASIC line number */
 | |
| 	long	offset;			/* file offset in em file */
 | |
| 	long	codelines;		/* number of em code lines */
 | |
| 	List	*callers;		/* used from where ? */
 | |
| 	List	*gotos;			/* fanout labels */
 | |
| 	struct LINERECORD	*nextline, *prevline;
 | |
| 	int	fixed;			/* fixation of block */
 | |
| } Linerecord;
 | |
| 
 | |
| extern Linerecord	*firstline, 
 | |
| 		*currline, 
 | |
| 		*lastline;
 | |
| extern List	*forwardlabel;
 | |
| 
 | |
| extern List	*gosublabel();
 |