add LCC - a better C-Compiler for WEGA
This commit is contained in:
parent
bbe5971c16
commit
e357050a05
|
|
@ -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 */
|
||||||
Loading…
Reference in New Issue