4.4BSD/usr/src/old/efl/bigdefs

#include "stdio.h"

#define HASHEDTABLE 1


#define NFTNTYPES 5
#define NEFLTYPES 12

#define MEMSIZE 12000

#define MAXSTNO 200
#define MAXINCLUDEDEPTH 10
#define MAXBLOCKDEPTH 30
#define MAXINDIFS 100
#define MAXFTNAMES 200
#define MAXEFLNAMES 401

#define EXECPOOL 20
#define EXPRPOOL 40

#define NAMESPERLINE 6

#define LINESPACES 66
#define INDENTSPACES 3

extern int yylineno;
extern int dumpic;
extern int memdump;
extern int dbgflag;
extern int nowarnflag;
extern int nocommentflag;
extern int verbose;
extern int dumpcore;
#define TEST if(dbgflag)
#define efgetc (efmacp?*efmacp++:getc(yyin))
extern char msg[];

#define UNIX 1
#define GCOS 2
#define GCOSBCD 3

#define FIELDMAX 32768.

typedef *ptr;
#define ALLOC(x) intalloc(sizeof(struct x))

extern FILE *diagfile;
extern FILE *codefile;
extern FILE *yyin;
extern FILE *fileptrs[];
extern char *filenames[];
extern int  filelines[];
extern int filedepth;
extern char *efmacp;
extern int filemacs[];
extern int pushchars[];

extern struct fileblock *iifilep;

extern int mem[];
extern unsigned int nmemused;
extern long int totfreed;
extern long int totalloc;

extern int nhid[];
extern int ndecl[];

extern int indifs[];
extern int nxtindif;
extern int afterif;

extern neflnames;

extern int nftnch;
extern int nftncont;

extern char ftnames[MAXFTNAMES][7];
extern int nftnames;
extern int nftnm0;
extern int impltype[];
extern int ftnmask[];

extern double fieldmax;
extern int ftnefl[];
extern int eflftn[];

extern ptr thisexec;
extern ptr thisctl;
extern int pushlex;
extern int igeol;
extern int ateof;
extern int eofneed;
extern int forcerr;
extern int comneed;
extern int optneed;
extern int defneed;
extern int lettneed;

extern int prevbg;

extern ptr hidlist;
extern ptr commonlist;
extern ptr tempvarlist;
extern ptr temptypelist;
extern ptr gonelist;
extern int blklevel;
extern int ctllevel;
extern int dclsect;
extern int instruct;
extern int inbound;
extern int inproc;

extern int ncases;
extern ptr comments;
extern ptr prevcomments;
extern ptr genequivs;
extern ptr arrays;
extern ptr generlist;
extern ptr knownlist;

extern int graal;
extern ptr thisproc;
extern ptr thisargs;

extern int langopt;
extern int dotsopt;
extern int dbgopt;
extern int dbglevel;

extern int stnos[];
extern int nxtstno;
extern int constno;
extern int labno;
extern int nerrs;
extern int nbad;
extern int nwarns;

struct headbits
	{
	int tag:8;
	int subtype:8;
	int blklevel:8;
	};

extern struct fileblock
	{
	FILE *fileptr;
	char filename[20];
	};

extern struct fileblock *ibfile;
extern struct fileblock *icfile;
extern struct fileblock *idfile;
extern struct fileblock *iefile;

extern struct chain
	{
	ptr nextp;
	ptr datap;
	} ;

typedef struct chain *chainp;

extern struct comentry
	{
	struct headbits header;
	char comname[7];
	long int comleng;
	int cominit:2;
	chainp comchain;
	} ;

extern struct stentry
	{
	struct headbits header;
	char *namep;
	ptr varp;
	int hashval;
	};

extern struct stentry *hashtab[];
extern struct stentry **hashend;

extern struct typeblock
	{
	struct headbits header;
	ptr sthead;
	ptr strdesc;
	int stralign;
	int strsize;
	int basetypes;
	} ;

extern struct keyblock
	{
	struct headbits header;
	ptr sthead;
	} ;


extern struct varblock
	{
	struct headbits header;
	ptr sthead;
	ptr vinit;
		int vadjdim:1;
		int vdcldone:1;
		int vdclstart:1;
		int vnamedone:1;
		int vprec:1;
		int vext:1;
		int vproc:2;
		int needpar:1;
		int vtype:4;
		int vclass:3;
	ptr vtypep;
	ptr vdim;
	ptr vsubs;
	ptr voffset;
	int vextbase;
	int vbase[NFTNTYPES];
	} ;

extern struct atblock
	{
	int atprec;
	int attype;
	int atext;
	int atclass;
	ptr attypep;
	ptr atcommon;
	ptr atdim;
	} ;

extern struct dimblock
	{
	ptr nextp;
	ptr lowerb;
	ptr upperb;
	} ;

extern struct exprblock	/* must be same size as varblock */
	{
	struct headbits header;
	ptr leftp;
	ptr rightp;
		int vadjdim:1;
		int vdcldone:1;
		int vdclstart:1;
		int vnamedone:1;
		int vprec:1;
		int vext:1;
		int vproc:2;
		int needpar:1;
		int vtype:4;
		int vclass:3;
	ptr vtypep;
	ptr vdim;
	ptr vsubs;
	ptr voffset;
	int vextbase;
	int vbase[NFTNTYPES];
	} ;


typedef union { struct varblock ; struct exprblock; } *nodep;

extern struct execblock
	{
	struct headbits header;
	ptr temps;
	int labelno;
		int uniffable:1;
		int brnchend:1;
		int labeled:1;
		int copylab:1;
		int labdefined:1;
		int labused:1;
		int labinacc:1;
	ptr execdesc;
	ptr prevexec;
	int nxtlabno;
	int nftnst;
	} ;


extern struct ctlblock	/* must be same size as execblock */
	{
	struct headbits header;
	ptr loopvar;
	ptr loopctl;
	ptr prevctl;
	int nextlab;
	int breaklab;
	int xlab;
	int indifn;
	} ;

extern struct caseblock
	{
	struct headbits header;
	ptr nextcase;
	int labelno;
		int uniffable:1;
		int brnchend:1;
		int labeled:1;
		int copylab:1;
		int labdefined:1;
		int labused:1;
		int labinacc:1;
	ptr casexpr;
	} ;

extern struct labelblock
	{
	struct headbits header;
	ptr sthead;
	int labelno;
		int uniffable:1;
		int brnchend:1;
		int labeled:1;
		int copylab:1;
		int labdefined:1;
		int labused:1;
		int labinacc:1;
	} ;

extern struct defblock
	{
	struct headbits header;
	ptr sthead;
	char *valp;
	} ;

extern struct doblock
	{
	struct headbits header;
	ptr dovar;
	ptr dopar[3];
	} ;

extern struct fieldspec
	{
	struct headbits header;
	int flbound;
	int frange;
	int frshift;
	int fanymore;
	} ;


extern struct genblock
	{
	struct headbits header;
	ptr nextgenf;
	char *genname;
	char *genfname[NEFLTYPES];
	int genftype[NEFLTYPES];
	} ;


extern struct knownname
	{
	struct headbits header;
	ptr nextfunct;
	char *funcname;
	int functype;
	} ;

extern struct iostblock
	{
	struct headbits header;
	ptr leftp;	/* padding */
	ptr right;	/* padding */
		int vadjdim:1;
		int vdcldone:1;
		int vdclstart:1;
		int vnamedone:1;
		int vprec:1;
		int vext:1;
		int vproc:2;
		int needpar:1;
		int vtype:4;
		int vclass:3;
	int iokwd;
	ptr iounit;
	ptr iolist;
	int iojunk[7];	/* padding */
	} ;

extern struct ioitem
	{
	struct headbits header;
	ptr ioexpr;
	char *iofmt;
	} ;


extern struct tailoring
	{
	int ftnsys;
	int errmode;
	int charcomp;
	int ftnin;
	int ftnout;
	int ftncontnu;
	char *procheader;
	int ftnchwd;
	int ftnsize[NFTNTYPES];
	int ftnalign[NFTNTYPES];
	char *dfltfmt[NEFLTYPES];
	int hollincall;
	int deltastno;
	int dclintrinsics;
	}  tailor;

/*Block tags */

#define TAROP 1
#define TASGNOP 2
#define TLOGOP 3
#define TRELOP 4
#define TCALL 5
#define TREPOP 6
#define TLIST 7
#define TCONST 8
#define TNAME 9
#define TERROR 10
#define TCOMMON 11
#define TSTRUCT 12
#define TSTFUNCT 13
#define TEXEC 14
#define TTEMP 15
#define TDEFINE 16
#define TKEYWORD 17
#define TLABEL 18
#define TCASE 19
#define TNOTOP 20
#define TNEGOP 21
#define TDOBLOCK 22
#define TCONTROL 23
#define TKNOWNFUNCT 24
#define TFIELD 25
#define TGENERIC 26
#define TIOSTAT 27

/* Operator subtypes */

#define OPPLUS 1
#define OPMINUS 2
#define OPSTAR 3
#define OPSLASH 4
#define OPPOWER 5

#define OPNOT 6
#define OPAND 7
#define OP2AND 8
#define OP2OR 9
#define OPOR 10

#define OPEQ 11
#define OPLT 12
#define OPGT 13
#define OPLE 14
#define OPGE 15
#define OPNE 16

#define OPLPAR 17
#define OPRPAR 18
#define OPEQUALS 19
#define OPCOMMA 20

#define OPASGN 0
#define OPREL 0


/* Simplification types */

#define LVAL 1
#define RVAL 2
#define SUBVAL 3
#define IFVAL 4


/* Parser return values */

#define PARSERR 1
#define PARSEOF 2
#define PARSOPT 3
#define PARSDCL 4
#define PARSDEF 5
#define PARSPROC 6


/* Symbol table types */

#define TYUNDEFINED 0
#define TYINT 1
#define TYREAL 2
#define TYLREAL 3
#define TYLOG 4
#define TYCOMPLEX 5
#define TYCHAR 6
#define TYSTRUCT 7
#define TYLABEL 8
#define TYSUBR 9
#define TYFIELD 10
#define TYHOLLERITH 11



/* Fortran types */

#define FTNINT 0
#define FTNREAL 1
#define FTNLOG 2
#define FTNCOMPLEX 3
#define FTNDOUBLE 4
#define FTNCHAR 5



/* symbol table classes */

#define CLUNDEFINED 0
#define CLARG 1
#define CLVALUE 2
#define CLSTAT 3
#define CLAUTO 4
#define CLCOMMON 5
#define CLMOS 6
#define CLEXT 7


/* values of vproc */

#define PROCUNKNOWN 0
#define PROCNO 1
#define PROCYES 2
#define PROCINTRINSIC 3



/* ctlblock subtypes */

#define STNULL 1
#define STIF 2
#define STIFELSE 3
#define STREPEAT 4
#define STWHILE 5
#define STFOR 6
#define STDO 7
#define STSWITCH 8
#define STRETURN 9
#define STGOTO 10
#define STCALL 11
#define STPROC 12



/* intermediate code definitions */

#define ICEOF 0
#define ICBEGIN 1
#define ICKEYWORD 2
#define ICOP 3
#define ICNAME 4
#define ICCONST 5
#define ICLABEL 6
#define ICMARK 7
#define ICINDENT 8
#define ICCOMMENT 9
#define ICINDPTR 10
#define ICBLANK 11

#define FCONTINUE 2
#define FCALL 3
#define FDO 4
#define FIF1 5
#define FIF2 6
#define FGOTO 7
#define FRETURN 8
#define FREAD 9
#define FWRITE 10
#define FFORMAT 11
#define FSTOP 12
#define FDATA 13
#define FEQUIVALENCE 14