/* misc constants */ enum { Eof = -1, False = 0, True = 1, Strsize = 512, Chunk = 512*1024, NADDR = 1, Sdepth = 64, }; typedef struct Node Node; typedef struct Sym Sym; typedef struct Type Type; typedef struct Tinfo Tinfo; typedef struct Jmps Jmps; typedef struct String String; typedef struct Hist Hist; typedef struct Tysym Tysym; typedef struct Stats Stats; struct Stats { int mem; int nodes; int types; }; struct Tysym { Sym *s; Type *t; }; struct Hist { Hist* link; char* name; long line; long offset; }; #define HISTSZ 20 #define H ((Hist*)0) struct Node { char type; char islval; char sun; char reg; Node *left; Node *right; union { Node *init; ulong atvsafe; }; Type *t; Sym *sym; Tinfo *ti; int srcline; union { long pc; long ival; float fval; Node *proto; }; }; #define ZeroN ((Node*)0) struct String { Node n; int len; String *next; char *string; }; /* Storage classes */ enum { Internal = 1, External, Parameter, Automatic, Argument, Private, Dfile, /* Fake for output */ Adtdeflt, Newtype, /* Fake - always put last */ }; enum { TXXX, TINT, TUINT, TSINT, TSUINT, TCHAR, TFLOAT, TIND, TCHANNEL, TARRAY, TAGGREGATE, TUNION, TFUNC, TVOID, TADT, Ntype, }; enum { MINT = (1<