USG_PG3/usr/source/lil/common

#define NSIZE	8	/* size of identifier names */

#define NULL	0

#define FALSE	0
#define TRUE	1

#define ERR	2	/* created non-terminal */
#define EOF	0	/* terminals */
#define DECL	3
#define COMMA	4
#define LPAREN	5
#define RPAREN	6
#define QUOTES	7
#define SCOLON	8
#define LBRAK	9
#define RBRAK	10
#define POP	11
#define OP	12
#define ANDOP	13
#define OROP	14
#define ROP	15
#define STRING	16
#define IDENT	17
#define GOTO	18
#define IF	19
#define ELSE	20
#define DO	21
#define BREAK	22
#define WHILE	23

#define KOND	24	/* created address modes */
#define LABEL	25
#define REG	32
#define RDEC	40
#define RINC	48
#define CON	56
#define MEM	64
#define MIDX	72	/* l.s. 3 bits hold index value */
#define IREG	80	/* indirect-> add 48 */
#define IRDEC	88
#define IRINC	96
#define ICON	104
#define IMEM	112
#define IMIDX	120	/* l.s. 3 bits hold index value */

#define I	48
#define R	7

#define CRSF	128	/* created symbol or allocator */
#define SKPF	64	/* skip initiating stack entry */
#define PUBF	32	/* public symbol or used stack entry */
#define DEFF	16	/* defined symbol or immediate stack entry */
#define DCLF	8	/* declared symbol or defining stack entry */
#define BYTF	4	/* byte */
#define BCCF	1	/* bad condition code generated */

#define ATTR	4

#define NOP	0	/* operator values */
#define GOESTO	1
#define PLUS	2
#define MINUS	3
#define NOT	4
#define OR	5
#define AND	6
#define ANDNOT	7
#define XOR	8
#define ROTATE	9
#define SHIFT	10
#define GETSNOT	11
#define GETSMI	12
#define TIMES	13
#define DIVIDE	14
#define TEST	15
#define TESTAND	16
#define GETS	17
#define DSHIFT	18
#define SROTATE	19
#define PUSH	20
#define BYTE	21
#define WORD	23
#define GLOBAL	24
#define LOCAL	25
#define SIZE	26
#define CAT	27

#define MEMOP	30
#define REGOP	31

#define SYS	40
#define JSR	41
#define RTS	42

#define GE	4	/* m.s. 8 bits of conditional branch */
#define GT	6
#define NE	2
#define EQ	3
#define LT	5
#define LE	7
#define HI	0202
#define HIS	0206
#define LO	0207
#define LOS	0203
#define N	0201
#define Z	3
#define V	0205
#define C	0207

struct at	{char flags, type;
		int value, bias, size;
		struct at *prev; };
struct symbol	{struct at sat;
		char name[NSIZE]; };
struct token	{struct at tat;
		struct symbol *tbran, *fbran;
		int start, sbias, state; };

struct token e;		/* protean stack entry */

struct symbol *dot;	/* -> table entry for '.' */
struct symbol *elc;	/* -> current elc */
struct symbol *tlist;	/* -> pending jump targets */

struct symbol *symtab;	/* -> bottom of symbol table */
struct symbol *sptop;	/* -> top of table */
struct symbol *spsave;	/* -> bottom of local frame */
int spused;		/* space used in table */
int space;		/* allocated space left */

int atime;		/* assembly time nesting depth */
int skip;		/* TRUE while skipping */
int debug;		/* TRUE for trace printouts */
int line;		/* source line number */

int fin;		/* selected input file */
int fout;		/* selected output file */
int fsyms;		/* symbol table file */
int fcode;		/* code output file */