int addfile(File*);void addfnptrs(Decl*, int);void addiface(Decl*, Decl*);void addinclude(char*);char *addrprint(char*, char*, int, Addr*);Typelist *addtype(Type*, Typelist*);Node *adtdecl(Decl *ids, Node *fields);void adtdecled(Node *n);void adtdefd(Type*);Decl *adtmeths(Type*);void adtstub(Decl*);long align(long, int);void *allocmem(ulong);void altcheck(Node *an, Type *ret);void altcom(Node*);Inst *andand(Node*, int, Inst*);Decl *appdecls(Decl*, Decl*);int argcompat(Node*, Decl*, Node*);void arraycom(Node*, Node*);void arraydefault(Node*, Node*);Type *arrowtype(Type*, Decl*);void asmdesc(Desc*);void asmentry(Decl*);void asmexc(Except*);void asminitializer(long, Node*);void asminst(Inst*);void asmldt(long, Decl*);void asmmod(Decl*);void asmpath(void);void asmstring(long, Sym*);void asmvar(long, Decl*);int assignindices(Node*);void bccom(Node*, Inst**);Inst *bcom(Node*, int, Inst*);void bindnames(Node*);void bindtypes(Type *t);Ok callcast(Node*, int, int);void callcom(Src*, int, Node*, Node*);Type* calltype(Type*, Node*, Type*);double canontod(ulong v[2]);void casecheck(Node *cn, Type *ret);int casecmp(Type*, Node*, Node*);void casecom(Node*);Node *caselist(Node*, Node*);void casesort(Type*, Label*, Label*, int, int);Case *checklabels(Node *inits, Type *ctype, int nlab, char *title);void checkrefs(Decl*);Node *checkused(Node*);int circlval(Node*, Node*);void concheck(Node *n, int isglobal);Node *condecl(Decl*, Node*);void condecled(Node *n);void constub(Decl*);Type *copytypeids(Type*);char *ctprint(char*, char*, Type*);int ctypeconv(Fmt*);Line curline(void);Decl *curscope(void);int cycarc(Type*, Type*);void cycfield(Type*, Decl*);void cycsizetype(Type*);void cyctype(Type*);int dasdecl(Node *n);void declaserr(Node*);int declasinfer(Node*, Type*);int declconv(Fmt*);Decl *declsort(Decl*);void declstart(void);void decltozero(Node *n);void deldecl(Decl*);int dequal(Decl*, Decl*, int);long descmap(Decl*, uchar*, long);void disaddr(int, Addr*);void disbcon(long);void discon(long);void disdata(int, long);void disdesc(Desc*);void disentry(Decl*);void disexc(Except*);void disinst(Inst*);void disldt(long, Decl*);void dismod(Decl*);void dispath(void);void disvar(long, Decl*);void disword(long);int dotconv(Fmt*);char *dotprint(char*, char*, Decl*, int);Type *dottype(Type*, Decl*);void dtocanon(double, ulong[2]);Decl *dupdecl(Decl*);Decl *dupdecls(Decl*);Node *dupn(int, Src*, Node*);Node *eacom(Node*, Node*, Node*);Ok echeck(Node *n, int typeok, int isglobal, Node* par);Node *ecom(Src*, Node*, Node*);Node *efold(Node *n);Node *elemsort(Node*);void emit(Decl*);Decl *encpolys(Decl*);Sym *enter(char*, int);Desc *enterdesc(uchar*, long, long);Sym *enterstring(char*, int);char *eprint(char*, char*, Node*);char *eprintlist(char*, char*, Node*, char*);void error(Line, char*, ...);#pragma varargck argpos error 2int etconv(Fmt*);Node *etolist(Node*);void excheck(Node *n, int isglobal);void exccheck(Node *cn, Type *ret);void excom(Node*);Node *exdecl(Decl*, Decl*);void exdecled(Node *n);Type *expandtype(Type*, Type*, Decl*, Tpair**);Type *expandtypes(Type*, Decl*);int expconv(Fmt*);Type *exptotype(Node*);void fatal(char*, ...);#pragma varargck argpos fatal 1void fielddecled(Node *n);Node *fielddecl(int store, Decl *ids);int findlab(Type *ty, Node *v, Label *labs, int nlab);int fixop(int, Type*, Type*, Type*, int*, int*);Fline fline(int);void fmtcheck(Node*, Node*, Node*);void fncheck(Decl *d);Decl *fnchk(Node *n);void fncom(Decl*);Node *fndecl(Node *n, Type *t, Node *body);void fndecled(Node *n);Decl* fnlookup(Sym*, Type*, Node**);Node *fold(Node*);void foldbranch(Inst*);Node *foldc(Node*);Node *foldcast(Node*, Node*);Node *foldcasti(Node*, Node*);Node *foldr(Node*);Node *foldvc(Node*);void gbind(Node *n);int gcheck(Node*, Decl**, int);void gdasdecl(Node *n);void gdecl(Node *n);Addr genaddr(Node*);Inst *genbra(Src*, int, Node*, Node*);Inst *genchan(Src*, Node*, Type*, Node*);Desc *gendesc(Decl*, long, Decl*);Inst *genfixcastop(Src*, int, Node*, Node*);Inst *genmove(Src*, int, Type*, Node*, Node*);Inst *genop(Src*, int, Node*, Node*, Node*);Inst *genrawop(Src*, int, Node*, Node*, Node*);void genstart(void);long getpc(Inst*);int gfltconv(Fmt*);Decl *globalBconst(Node*);Node *globalas(Node*, Node*, int);Decl *globalbconst(Node*);Decl *globalconst(Node*);Decl *globalfconst(Node*);Decl *globalsconst(Node*);void gsort(Node*);int hasasgns(Node*);int hascall(Node*);Node *hascomm(Node*);int hasside(Node*, int);long idindices(Decl*);long idoffsets(Decl*, long, int);Type *idtype(Type*);void importcheck(Node *n, int isglobal);void importchk(Node*);Node *importdecl(Node *m, Decl *ids);void importdecled(Node *n);void includef(Sym*);Node *indsascom(Src*, Node*, Node*);int initable(Node*, Node*, int);int inloop(void);void installids(int store, Decl *ids);int instconv(Fmt*);Type *insttype(Type*, Decl*, Tpair**);Type *internaltype(Type*);int isimpmod(Sym*);int islval(Node*);int ispoly(Decl*);int ispolyadt(Type*);int istuple(Node*);void joiniface(Type*, Type*);void lexinit(void);void lexstart(char*);int lineconv(Fmt*);int local(Decl*);Decl *lookdot(Decl*, Sym*);Decl *lookup(Sym*);int mapconv(Fmt*);int marklval(Node*);int mathchk(Node*, int);void mergepolydecs(Type*);Type *mkadtcon(Type*);Type *mkadtpickcon(Type*, Type*);Type *mkarrowtype(Line*, Line*, Type*, Sym*);Node *mkbin(int, Node*, Node*);Node *mkconst(Src*, Long);Decl *mkdecl(Src*, int, Type*);Node *mkdeclname(Src*, Decl*);Desc *mkdesc(long, Decl*);Type *mkdottype(Line*, Line*, Type*, Sym*);Type *mkexbasetype(Type*);Type *mkextuptype(Type*);Type *mkextype(Type*);File *mkfile(char*, int, int, int, char*, int, int);Decl *mkids(Src*, Sym*, Type*, Decl*);Type *mkidtype(Src*, Sym*);Type *mkiface(Decl*);Inst *mkinst(void);Type *mkinsttype(Src*, Type*, Typelist*);Node *mkname(Src*, Sym*);Node *mknil(Src*);Node *mkn(int, Node*, Node*);Node *mkrconst(Src*, Real);Node *mksconst(Src*, Sym*);Node *mkscope(Node *body);Type *mktalt(Case*);Desc *mktdesc(Type*);Node *mktn(Type*);Type *mktype(Line*, Line*, int, Type*, Decl*);Node *mkunary(int, Node*);Type *mkvarargs(Node*, Node*);Teq *modclass(void);void modcode(Decl*);void modcom(Decl*);void moddataref(void);Node *moddecl(Decl *ids, Node *fields);void moddecled(Node *n);Decl *modglobals(Decl*, Decl*);Decl *modimp(Dlist*, Decl*);void modrefable(Type*);void modresolve(void);void modstub(Decl*);void modtab(Decl*);Decl *module(Decl*);int mustzero(Decl *);int mpatof(char*, double*);Decl *namedot(Decl*, Sym*);Decl *namesort(Decl*);void narrowmods(void);void nerror(Node*, char*, ...);#pragma varargck argpos nerror 2int nested(void);Inst *nextinst(void);int nodeconv(Fmt*);int nodes(Node*);char *nprint(char*, char*, Node*, int);void nwarn(Node*, char*, ...);#pragma varargck argpos nwarn 2int occurs(Decl*, Node*);int opconv(Fmt*);void optabinit(void);void optim(Inst*, Decl*);Inst *oror(Node*, int, Inst*);Decl *outerpolys(Node*);Node *passfns(Src*, Decl*, Node*, Node*, Type*, Tpair*);Node *passimplicit(Node*, Node*);void patch(Inst*, Inst*);void pickcheck(Node*, Type*);int pickdecled(Node *n);Decl *pickdefd(Type*, Decl*);void pickdupcom(Src*, Node*, Node*);Decl* polydecl(Decl*);int polyequal(Decl*, Decl*);void popblock(void);Decl *popids(Decl*);void popscopes(void);Decl *popscope(void);void printdecls(Decl*);int pushblock(void);void pushlabel(Node*);void pushscope(Node *, int);void raisescheck(Type*);int raisescompat(Node*, Node*);void reach(Inst*);void *reallocmem(void*, ulong);void recvacom(Src*, Node*, Node*);void redecl(Decl *d);void reftype(Type*);void repushblock(int);void repushids(Decl*);void resizetype(Type*);long resolvedesc(Decl*, long, Decl*);Decl* resolveldts(Decl*, Decl**);int resolvemod(Decl*);long resolvepcs(Inst*);Node *retalloc(Node*, Node*);Decl *revids(Decl*);Node *rewrite(Node *n);Node *rewritecomm(Node*, Node*, Node*, Node*);Inst *rewritedestreg(Inst*, int, int);Inst *rewritesrcreg(Inst*, int, int, int);void rmfnptrs(Decl*);Node *rotater(Node*);double rpow(double, int);int sameaddr(Node*, Node*);int sametree(Node*, Node*);void sblfiles(void);void sblfn(Decl**, int);void sblinst(Inst*, long);void sblmod(Decl*);void sblty(Decl**, int);void sblvar(Decl*);double scale(Type*);double scale2(Type*, Type*);Node* scheck(Node*, Type*, int);void scom(Node*);char *secpy(char*, char*, char*);char *seprint(char*, char*, char*, ...);#pragma varargck argpos seprint 3void shareloc(Decl*);int shiftchk(Node*);ulong sign(Decl*);Node *simplify(Node*);Szal sizeids(Decl*, long);void sizetype(Type*);Node *slicelcom(Src*, Node*, Node*);int specific(Type*);int srcconv(Fmt*);char* srcpath(char*, int);int storeconv(Fmt*);char *stprint(char*, char*, Type*);Sym *stringcat(Sym*, Sym*);char *stringpr(char*, char*, Sym*);Long strtoi(char*, int);int stypeconv(Fmt*);Node *sumark(Node*);int symcmp(Sym*, Sym*);Node *tacquire(Node*);Ok tagcast(Node*, Node*, Node*, Decl*, int, int);Node *talloc(Node*, Type*, Node*);int tcompat(Type*, Type*, int);void tcycle(Type*);Decl *tdecls(void);long tdescmap(Type*, uchar*, long);void teqclass(Type*);int tequal(Type*, Type*);void tfree(Node*);void tfreelater(Node*);void tfreenow(void);void tinit(void);int tmustzero(Type *);Type *toptype(Src*, Type*);Type *topvartype(Type *t, Decl *id, int tyok, int polyok);Type* tparent(Type*, Type*);char *tprint(char*, char*, Type*);void translate(char*, char*, char*);void trelease(Node*);int tunify(Type*, Type*, Tpair**);int tupaliased(Node*, Node*);int tupsaliased(Node*, Node*);void tupcom(Node*, Node*);void tuplcom(Node*, Node*);void tuplrcom(Node*, Node*);Decl *tuplefields(Node*);void typebuiltin(Decl*, Type*);Decl *typecheck(int);int typeconv(Fmt*);Node *typedecl(Decl *ids, Type *t);void typedecled(Node *n);Decl *typeids(Decl*, Type*);void typeinit(void);void typestart(void);Decl *undefed(Src *src, Sym *s);Desc *usedesc(Desc*);void usedty(Type*);Type *usetype(Type*);Type *validtype(Type*, Decl*);int valistype(Node*);Type *valtmap(Type*, Tpair*);void varcheck(Node *n, int isglobal);int varcom(Decl*);Node *vardecl(Decl*, Type*);void vardecled(Node *n);Node *varinit(Decl*, Node*);Decl *varlistdecl(Decl*, Node*);Decl *vars(Decl*);int vcom(Decl*);Type *verifytypes(Type*, Decl*, Decl*);void warn(Line, char*, ...);#pragma varargck argpos warn 2void yyerror(char*, ...);#pragma varargck argpos yyerror 1int yylex(void);int yyparse(void);void zcom(Node *, Node**);void zcom0(Decl *, Node**);void zcom1(Node *, Node**);
int addfile(File*);
void addfnptrs(Decl*, int);
void addiface(Decl*, Decl*);
void addinclude(char*);
char *addrprint(char*, char*, int, Addr*);
Typelist *addtype(Type*, Typelist*);
Node *adtdecl(Decl *ids, Node *fields);
void adtdecled(Node *n);
void adtdefd(Type*);
Decl *adtmeths(Type*);
void adtstub(Decl*);
long align(long, int);
void *allocmem(ulong);
void altcheck(Node *an, Type *ret);
void altcom(Node*);
Inst *andand(Node*, int, Inst*);
Decl *appdecls(Decl*, Decl*);
int argcompat(Node*, Decl*, Node*);
void arraycom(Node*, Node*);
void arraydefault(Node*, Node*);
Type *arrowtype(Type*, Decl*);
void asmdesc(Desc*);
void asmentry(Decl*);
void asmexc(Except*);
void asminitializer(long, Node*);
void asminst(Inst*);
void asmldt(long, Decl*);
void asmmod(Decl*);
void asmpath(void);
void asmstring(long, Sym*);
void asmvar(long, Decl*);
int assignindices(Node*);
void bccom(Node*, Inst**);
Inst *bcom(Node*, int, Inst*);
void bindnames(Node*);
void bindtypes(Type *t);
Ok callcast(Node*, int, int);
void callcom(Src*, int, Node*, Node*);
Type* calltype(Type*, Node*, Type*);
double canontod(ulong v[2]);
void casecheck(Node *cn, Type *ret);
int casecmp(Type*, Node*, Node*);
void casecom(Node*);
Node *caselist(Node*, Node*);
void casesort(Type*, Label*, Label*, int, int);
Case *checklabels(Node *inits, Type *ctype, int nlab, char *title);
void checkrefs(Decl*);
Node *checkused(Node*);
int circlval(Node*, Node*);
void concheck(Node *n, int isglobal);
Node *condecl(Decl*, Node*);
void condecled(Node *n);
void constub(Decl*);
Type *copytypeids(Type*);
char *ctprint(char*, char*, Type*);
int ctypeconv(Fmt*);
Line curline(void);
Decl *curscope(void);
int cycarc(Type*, Type*);
void cycfield(Type*, Decl*);
void cycsizetype(Type*);
void cyctype(Type*);
int dasdecl(Node *n);
void declaserr(Node*);
int declasinfer(Node*, Type*);
int declconv(Fmt*);
Decl *declsort(Decl*);
void declstart(void);
void decltozero(Node *n);
void deldecl(Decl*);
int dequal(Decl*, Decl*, int);
long descmap(Decl*, uchar*, long);
void disaddr(int, Addr*);
void disbcon(long);
void discon(long);
void disdata(int, long);
void disdesc(Desc*);
void disentry(Decl*);
void disexc(Except*);
void disinst(Inst*);
void disldt(long, Decl*);
void dismod(Decl*);
void dispath(void);
void disvar(long, Decl*);
void disword(long);
int dotconv(Fmt*);
char *dotprint(char*, char*, Decl*, int);
Type *dottype(Type*, Decl*);
void dtocanon(double, ulong[2]);
Decl *dupdecl(Decl*);
Decl *dupdecls(Decl*);
Node *dupn(int, Src*, Node*);
Node *eacom(Node*, Node*, Node*);
Ok echeck(Node *n, int typeok, int isglobal, Node* par);
Node *ecom(Src*, Node*, Node*);
Node *efold(Node *n);
Node *elemsort(Node*);
void emit(Decl*);
Decl *encpolys(Decl*);
Sym *enter(char*, int);
Desc *enterdesc(uchar*, long, long);
Sym *enterstring(char*, int);
char *eprint(char*, char*, Node*);
char *eprintlist(char*, char*, Node*, char*);
void error(Line, char*, ...);
#pragma varargck argpos error 2
int etconv(Fmt*);
Node *etolist(Node*);
void excheck(Node *n, int isglobal);
void exccheck(Node *cn, Type *ret);
void excom(Node*);
Node *exdecl(Decl*, Decl*);
void exdecled(Node *n);
Type *expandtype(Type*, Type*, Decl*, Tpair**);
Type *expandtypes(Type*, Decl*);
int expconv(Fmt*);
Type *exptotype(Node*);
void fatal(char*, ...);
#pragma varargck argpos fatal 1
void fielddecled(Node *n);
Node *fielddecl(int store, Decl *ids);
int findlab(Type *ty, Node *v, Label *labs, int nlab);
int fixop(int, Type*, Type*, Type*, int*, int*);
Fline fline(int);
void fmtcheck(Node*, Node*, Node*);
void fncheck(Decl *d);
Decl *fnchk(Node *n);
void fncom(Decl*);
Node *fndecl(Node *n, Type *t, Node *body);
void fndecled(Node *n);
Decl* fnlookup(Sym*, Type*, Node**);
Node *fold(Node*);
void foldbranch(Inst*);
Node *foldc(Node*);
Node *foldcast(Node*, Node*);
Node *foldcasti(Node*, Node*);
Node *foldr(Node*);
Node *foldvc(Node*);
void gbind(Node *n);
int gcheck(Node*, Decl**, int);
void gdasdecl(Node *n);
void gdecl(Node *n);
Addr genaddr(Node*);
Inst *genbra(Src*, int, Node*, Node*);
Inst *genchan(Src*, Node*, Type*, Node*);
Desc *gendesc(Decl*, long, Decl*);
Inst *genfixcastop(Src*, int, Node*, Node*);
Inst *genmove(Src*, int, Type*, Node*, Node*);
Inst *genop(Src*, int, Node*, Node*, Node*);
Inst *genrawop(Src*, int, Node*, Node*, Node*);
void genstart(void);
long getpc(Inst*);
int gfltconv(Fmt*);
Decl *globalBconst(Node*);
Node *globalas(Node*, Node*, int);
Decl *globalbconst(Node*);
Decl *globalconst(Node*);
Decl *globalfconst(Node*);
Decl *globalsconst(Node*);
void gsort(Node*);
int hasasgns(Node*);
int hascall(Node*);
Node *hascomm(Node*);
int hasside(Node*, int);
long idindices(Decl*);
long idoffsets(Decl*, long, int);
Type *idtype(Type*);
void importcheck(Node *n, int isglobal);
void importchk(Node*);
Node *importdecl(Node *m, Decl *ids);
void importdecled(Node *n);
void includef(Sym*);
Node *indsascom(Src*, Node*, Node*);
int initable(Node*, Node*, int);
int inloop(void);
void installids(int store, Decl *ids);
int instconv(Fmt*);
Type *insttype(Type*, Decl*, Tpair**);
Type *internaltype(Type*);
int isimpmod(Sym*);
int islval(Node*);
int ispoly(Decl*);
int ispolyadt(Type*);
int istuple(Node*);
void joiniface(Type*, Type*);
void lexinit(void);
void lexstart(char*);
int lineconv(Fmt*);
int local(Decl*);
Decl *lookdot(Decl*, Sym*);
Decl *lookup(Sym*);
int mapconv(Fmt*);
int marklval(Node*);
int mathchk(Node*, int);
void mergepolydecs(Type*);
Type *mkadtcon(Type*);
Type *mkadtpickcon(Type*, Type*);
Type *mkarrowtype(Line*, Line*, Type*, Sym*);
Node *mkbin(int, Node*, Node*);
Node *mkconst(Src*, Long);
Decl *mkdecl(Src*, int, Type*);
Node *mkdeclname(Src*, Decl*);
Desc *mkdesc(long, Decl*);
Type *mkdottype(Line*, Line*, Type*, Sym*);
Type *mkexbasetype(Type*);
Type *mkextuptype(Type*);
Type *mkextype(Type*);
File *mkfile(char*, int, int, int, char*, int, int);
Decl *mkids(Src*, Sym*, Type*, Decl*);
Type *mkidtype(Src*, Sym*);
Type *mkiface(Decl*);
Inst *mkinst(void);
Type *mkinsttype(Src*, Type*, Typelist*);
Node *mkname(Src*, Sym*);
Node *mknil(Src*);
Node *mkn(int, Node*, Node*);
Node *mkrconst(Src*, Real);
Node *mksconst(Src*, Sym*);
Node *mkscope(Node *body);
Type *mktalt(Case*);
Desc *mktdesc(Type*);
Node *mktn(Type*);
Type *mktype(Line*, Line*, int, Type*, Decl*);
Node *mkunary(int, Node*);
Type *mkvarargs(Node*, Node*);
Teq *modclass(void);
void modcode(Decl*);
void modcom(Decl*);
void moddataref(void);
Node *moddecl(Decl *ids, Node *fields);
void moddecled(Node *n);
Decl *modglobals(Decl*, Decl*);
Decl *modimp(Dlist*, Decl*);
void modrefable(Type*);
void modresolve(void);
void modstub(Decl*);
void modtab(Decl*);
Decl *module(Decl*);
int mustzero(Decl *);
int mpatof(char*, double*);
Decl *namedot(Decl*, Sym*);
Decl *namesort(Decl*);
void narrowmods(void);
void nerror(Node*, char*, ...);
#pragma varargck argpos nerror 2
int nested(void);
Inst *nextinst(void);
int nodeconv(Fmt*);
int nodes(Node*);
char *nprint(char*, char*, Node*, int);
void nwarn(Node*, char*, ...);
#pragma varargck argpos nwarn 2
int occurs(Decl*, Node*);
int opconv(Fmt*);
void optabinit(void);
void optim(Inst*, Decl*);
Inst *oror(Node*, int, Inst*);
Decl *outerpolys(Node*);
Node *passfns(Src*, Decl*, Node*, Node*, Type*, Tpair*);
Node *passimplicit(Node*, Node*);
void patch(Inst*, Inst*);
void pickcheck(Node*, Type*);
int pickdecled(Node *n);
Decl *pickdefd(Type*, Decl*);
void pickdupcom(Src*, Node*, Node*);
Decl* polydecl(Decl*);
int polyequal(Decl*, Decl*);
void popblock(void);
Decl *popids(Decl*);
void popscopes(void);
Decl *popscope(void);
void printdecls(Decl*);
int pushblock(void);
void pushlabel(Node*);
void pushscope(Node *, int);
void raisescheck(Type*);
int raisescompat(Node*, Node*);
void reach(Inst*);
void *reallocmem(void*, ulong);
void recvacom(Src*, Node*, Node*);
void redecl(Decl *d);
void reftype(Type*);
void repushblock(int);
void repushids(Decl*);
void resizetype(Type*);
long resolvedesc(Decl*, long, Decl*);
Decl* resolveldts(Decl*, Decl**);
int resolvemod(Decl*);
long resolvepcs(Inst*);
Node *retalloc(Node*, Node*);
Decl *revids(Decl*);
Node *rewrite(Node *n);
Node *rewritecomm(Node*, Node*, Node*, Node*);
Inst *rewritedestreg(Inst*, int, int);
Inst *rewritesrcreg(Inst*, int, int, int);
void rmfnptrs(Decl*);
Node *rotater(Node*);
double rpow(double, int);
int sameaddr(Node*, Node*);
int sametree(Node*, Node*);
void sblfiles(void);
void sblfn(Decl**, int);
void sblinst(Inst*, long);
void sblmod(Decl*);
void sblty(Decl**, int);
void sblvar(Decl*);
double scale(Type*);
double scale2(Type*, Type*);
Node* scheck(Node*, Type*, int);
void scom(Node*);
char *secpy(char*, char*, char*);
char *seprint(char*, char*, char*, ...);
#pragma varargck argpos seprint 3
void shareloc(Decl*);
int shiftchk(Node*);
ulong sign(Decl*);
Node *simplify(Node*);
Szal sizeids(Decl*, long);
void sizetype(Type*);
Node *slicelcom(Src*, Node*, Node*);
int specific(Type*);
int srcconv(Fmt*);
char* srcpath(char*, int);
int storeconv(Fmt*);
char *stprint(char*, char*, Type*);
Sym *stringcat(Sym*, Sym*);
char *stringpr(char*, char*, Sym*);
Long strtoi(char*, int);
int stypeconv(Fmt*);
Node *sumark(Node*);
int symcmp(Sym*, Sym*);
Node *tacquire(Node*);
Ok tagcast(Node*, Node*, Node*, Decl*, int, int);
Node *talloc(Node*, Type*, Node*);
int tcompat(Type*, Type*, int);
void tcycle(Type*);
Decl *tdecls(void);
long tdescmap(Type*, uchar*, long);
void teqclass(Type*);
int tequal(Type*, Type*);
void tfree(Node*);
void tfreelater(Node*);
void tfreenow(void);
void tinit(void);
int tmustzero(Type *);
Type *toptype(Src*, Type*);
Type *topvartype(Type *t, Decl *id, int tyok, int polyok);
Type* tparent(Type*, Type*);
char *tprint(char*, char*, Type*);
void translate(char*, char*, char*);
void trelease(Node*);
int tunify(Type*, Type*, Tpair**);
int tupaliased(Node*, Node*);
int tupsaliased(Node*, Node*);
void tupcom(Node*, Node*);
void tuplcom(Node*, Node*);
void tuplrcom(Node*, Node*);
Decl *tuplefields(Node*);
void typebuiltin(Decl*, Type*);
Decl *typecheck(int);
int typeconv(Fmt*);
Node *typedecl(Decl *ids, Type *t);
void typedecled(Node *n);
Decl *typeids(Decl*, Type*);
void typeinit(void);
void typestart(void);
Decl *undefed(Src *src, Sym *s);
Desc *usedesc(Desc*);
void usedty(Type*);
Type *usetype(Type*);
Type *validtype(Type*, Decl*);
int valistype(Node*);
Type *valtmap(Type*, Tpair*);
void varcheck(Node *n, int isglobal);
int varcom(Decl*);
Node *vardecl(Decl*, Type*);
void vardecled(Node *n);
Node *varinit(Decl*, Node*);
Decl *varlistdecl(Decl*, Node*);
Decl *vars(Decl*);
int vcom(Decl*);
Type *verifytypes(Type*, Decl*, Decl*);
void warn(Line, char*, ...);
#pragma varargck argpos warn 2
void yyerror(char*, ...);
#pragma varargck argpos yyerror 1
int yylex(void);
int yyparse(void);
void zcom(Node *, Node**);
void zcom0(Decl *, Node**);
void zcom1(Node *, Node**);