* C compiler-- first pass header
#define LTYPE long /* change to int if no long consts */
#define MAXINT 077777 /* Largest positive short integer */
#define MAXUINT 0177777 /* largest unsigned integer */
#define NCPS 8 /* # chars per symbol */
#define HSHSIZ 400 /* # entries in hash table for names */
#define CMSIZ 40 /* size of expression stack */
#define SSIZE 20 /* size of other expression stack */
#define SWSIZ 230 /* size of switch table */
#define NMEMS 128 /* Number of members in a structure */
#define NBPW 16 /* bits per word, object machine */
#define NBPC 8 /* bits per character, object machine */
#define NCPW 2 /* chars per word, object machine */
#define LNCPW 2 /* chars per word, compiler's machine */
#define STAUTO (-6) /* offset of first auto variable */
#define STARG 4 /* offset of first argument */
* # bytes in primitive types
* format of a structure description
int ssize
; /* structure size */
struct hshtab
**memlist
; /* member list */
* For fields, strp points here instead.
int flen
; /* field width in bits */
int bitoffs
; /* shift count */
* Structure of tree nodes for operators
int type
; /* data type */
int *subsp
; /* subscript list (for arrays) */
struct str
*strp
; /* structure description for structs */
struct tnode
*tr1
; /* left operand */
struct tnode
*tr2
; /* right operand */
* Tree node for constants
* Tree node for long constants
* Pushed-down entry for block structure
char hclass
; /* storage class */
char hflag
; /* various flags */
int *hsubsp
; /* subscript list */
struct str
*hstrp
; /* structure description */
int hoffset
; /* post-allocation location */
struct phshtab
*hpdown
; /* Pushed-down name in outer block */
char hblklev
; /* Block level of definition */
char name
[NCPS
]; /* ASCII name */
* Place used to keep dimensions
* Table for recording switches.
struct hshtab hshtab
[HSHSIZ
];
struct swtab swtab
[SWSIZ
];
unsigned autolen
; /* make these int if necessary */
unsigned maxauto
; /* ... will only cause trouble rarely */
struct hshtab structhole
;
#define SEOF 200 /* stack EOF marker in expr compilation */
#define UNION 8 /* adjusted later to struct */
* Special operators in intermediate code
struct tnode
*disarray();
struct hshtab
*xprtype();