From e357050a05ab903e2ca5fc228a85206764bc8eb2 Mon Sep 17 00:00:00 2001 From: Oliver Lehmann Date: Wed, 25 Apr 1990 21:18:08 +0000 Subject: [PATCH] add LCC - a better C-Compiler for WEGA --- WEGA/contrib/lcc/cmd/comp/common/mfile1.h | 211 ++++++++++++++++++++++ 1 file changed, 211 insertions(+) create mode 100644 WEGA/contrib/lcc/cmd/comp/common/mfile1.h diff --git a/WEGA/contrib/lcc/cmd/comp/common/mfile1.h b/WEGA/contrib/lcc/cmd/comp/common/mfile1.h new file mode 100644 index 0000000..4f4f496 --- /dev/null +++ b/WEGA/contrib/lcc/cmd/comp/common/mfile1.h @@ -0,0 +1,211 @@ +# include "macdefs.h" +# include "manifest.h" + +/* storage classes */ +# define SNULL 0 +# define AUTO 1 +# define EXTERN 2 +# define STATIC 3 +# define REGISTER 4 +# define EXTDEF 5 +# define LABEL 6 +# define ULABEL 7 +# define MOS 8 +# define PARAM 9 +# define STNAME 10 +# define MOU 11 +# define UNAME 12 +# define TYPEDEF 13 +# define FORTRAN 14 +# define ENAME 15 +# define MOE 16 +# define UFORTRAN 17 +# define USTATIC 18 + /* field size is ORed in */ +# define FIELD 0100 +# define FLDSIZ 077 +# ifndef NODBG +extern char *scnames(); +# endif + +/* location counters */ +# define PROG 0 +# define ADATA 1 +# define DATA 2 +# define ISTRNG 3 +# define STRNG 4 + +/* symbol table flags */ +# define SMOS 01 +# define SHIDDEN 02 +# define SHIDES 04 +# define SSET 010 +# define SREF 020 +# define SNONUNIQ 040 +# define STAG 0100 + + +struct symtab { + char * sname; + TWORD stype; /* type word */ + + char sclass; /* storage class */ + char slevel; /* scope level */ + char sflags; /* flags for set, use, hidden, mos, etc. */ + OFFSZ offset; /* offset or value */ + short dimoff; /* offset into the dimension table */ + short sizoff; /* offset into the size table */ + short suse; /* line number of last use of the variable */ + struct symtab *scopelink; /* chain of symbols at same level */ +}; + + +struct sw { + CONSZ sval; + int slab; +}; + +extern struct sw swtab[]; +extern struct sw *swp; +extern int swx; + +extern int ftnno; +extern int blevel; +extern int instruct, stwart; + +extern int lineno, nerrors; +typedef union { + int intval; + NODE * nodep; +} YYSTYPE; +extern YYSTYPE yylval; + +extern CONSZ lastcon; +extern CONSZ ccast(); +extern double dcon; + +extern char ftitle[]; +extern struct symtab stab[]; +extern int curftn; +extern int strftn; +extern TWORD ftntype; +extern char *locnames[]; +extern int curloc; +extern int curclass; +extern int curdim; +extern OFFSZ dimtab[]; +extern long paramstk[]; +extern int paramno; +extern int argstk[]; +extern OFFSZ argsoff[]; +extern TWORD argty[]; +extern int argno; +extern OFFSZ autooff, argoff, strucoff; +extern int regvar; +extern int nextrvar; +extern int brkflag; +extern char yytext[]; + +extern int strflg; + +extern OFFSZ inoff; + +extern int reached; + +/* tunnel to buildtree for name id's */ + +extern int idname; + +extern NODE node[]; +extern NODE *lastfree; + +extern int cflag, hflag, pflag; + +/* various labels */ +extern int brklab; +extern int contlab; +extern int flostat; +extern int retlab; +extern int retstat; +extern int asavbc[], *psavbc; + +/* flags used in structures/unions */ + +# define SEENAME 01 +# define INSTRUCT 02 +# define INUNION 04 +# define FUNNYNAME 010 +# define TAGNAME 020 + +/* flags used in the (elementary) flow analysis ... */ + +# define FBRK 02 +# define FCONT 04 +# define FDEF 010 +# define FLOOP 020 + +/* flags used for return status */ + +# define RETVAL 1 +# define NRETVAL 2 + +/* used to mark a constant with no name field */ + +# define NONAME 040000 + + /* mark an offset which is undefined */ + +# define NOOFFSET (-10201) + +/* declarations of various functions */ + +extern NODE + *aadjust(), + *bcon(), + *bdty(), + *block(), + *bpsize(), + *buildtree(), + *clocal(), + *conval(), + *convert(), + *dclstruct(), + *doszof(), + *getstr(), + *makety(), + *mkty(), + *oconvert(), + *offcon(), + *optim(), + *pconvert(), + *ptmatch(), + *pvconvert(), + *rstruct(), + *sconvert(), + *strargs(), + *stref(), + *talloc(), + *tymatch(), + *tymerge(), + *unconvert(), + *xicolon(); + +OFFSZ tsize(), + psize(); + +TWORD types(), + ctype(); + +char *exname(), *exdcon(); + +# define checkst(x) + +# ifdef SDB +# include "sdb.h" +# endif + +/* type that is equivalent to pointers in size */ +# ifndef PTRTYPE +# define PTRTYPE INT +# endif +extern char datanm[]; /* for data-segment names */