1989-02-07 11:04:05 +00:00
|
|
|
/*
|
|
|
|
* (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
|
|
|
|
* See the copyright notice in the ACK home directory, in the file "Copyright".
|
|
|
|
*/
|
1994-06-27 08:03:14 +00:00
|
|
|
/* $Id$ */
|
1989-02-07 11:04:05 +00:00
|
|
|
/* L A B E L D E F I N I T I O N */
|
2019-02-18 16:42:15 +00:00
|
|
|
#ifndef LABEL_H_
|
|
|
|
#define LABEL_H_
|
1989-02-07 11:04:05 +00:00
|
|
|
|
|
|
|
#include <em_label.h> /* obtain definition of "label" */
|
|
|
|
|
|
|
|
#define NO_LABEL (label) 0
|
|
|
|
|
|
|
|
extern label lab_count;
|
|
|
|
#define text_label() (lab_count++) /* returns a new text label */
|
|
|
|
|
|
|
|
extern label datlab_count;
|
|
|
|
#define data_label() (datlab_count++) /* returns a new data label */
|
|
|
|
|
|
|
|
#define define_label(idf) enter_label(idf, 1);
|
|
|
|
/* The identifier idf is defined as a label. If it is new,
|
|
|
|
it is entered into the idf list with the largest possible
|
|
|
|
scope, i.e., on the lowest possible level.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#define apply_label(idf) enter_label(idf, 0);
|
|
|
|
/* The identifier idf is applied as a label. It may or may
|
|
|
|
not be there, and if it is there, it may be from a
|
|
|
|
declaration or another application.
|
|
|
|
*/
|
2019-02-18 16:42:15 +00:00
|
|
|
|
|
|
|
struct idf;
|
|
|
|
|
|
|
|
void enter_label(register struct idf *idf, int defining);
|
|
|
|
void unstack_label(register struct idf *idf);
|
|
|
|
|
|
|
|
#endif /* LABEL_H_ */
|