/* * (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();