now uses alloc module, bug fixes, -N option under USE_TMP, to not do so
This commit is contained in:
parent
b4e4250144
commit
8116e3181f
37 changed files with 124 additions and 136 deletions
|
@ -1,6 +1,7 @@
|
|||
/* $Header$ */
|
||||
/* L E X I C A L A N A L Y Z E R */
|
||||
|
||||
#include <alloc.h>
|
||||
#include "nofloat.h"
|
||||
#include "idfsize.h"
|
||||
#include "numsize.h"
|
||||
|
@ -8,7 +9,6 @@
|
|||
#include "strsize.h"
|
||||
#include "nopp.h"
|
||||
#include "input.h"
|
||||
#include "alloc.h"
|
||||
#include "arith.h"
|
||||
#include "def.h"
|
||||
#include "idf.h"
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
/* $Header$ */
|
||||
/* PARSER ERROR ADMINISTRATION */
|
||||
|
||||
#include <alloc.h>
|
||||
#include "nofloat.h"
|
||||
#include "idf.h"
|
||||
#include "alloc.h"
|
||||
#include "arith.h"
|
||||
#include "LLlex.h"
|
||||
#include "Lpars.h"
|
||||
|
@ -12,9 +12,10 @@ extern char *symbol2str();
|
|||
|
||||
LLmessage(tk) {
|
||||
err_occurred = 1;
|
||||
if (tk < 0)
|
||||
fatal("parser administration overflow");
|
||||
if (tk) {
|
||||
if (tk < 0) {
|
||||
error("end of file expected");
|
||||
}
|
||||
else if (tk) {
|
||||
error("%s missing", symbol2str(tk));
|
||||
insert_token(tk);
|
||||
}
|
||||
|
|
|
@ -18,12 +18,14 @@ STRLIB = $(EMHOME)/modules/lib/libstring.a
|
|||
PRTLIB = $(EMHOME)/modules/lib/libprint.a
|
||||
EMMESLIB = $(EMHOME)/modules/lib/libem_mes.a
|
||||
INPLIB = $(EMHOME)/modules/lib/libinput.a
|
||||
ALLOCLIB = $(EMHOME)/modules/lib/liballoc.a
|
||||
MALLOC = $(EMHOME)/modules/lib/malloc.o
|
||||
#CH3LIB = $(EMHOME)/modules/lib/libch3.a
|
||||
CH3LIB =
|
||||
LIBS = $(INPLIB) $(CH3LIB) $(EMMESLIB) $(EMKLIB) \
|
||||
$(PRTLIB) $(STRLIB) $(SYSLIB)
|
||||
$(PRTLIB) $(STRLIB) $(ALLOCLIB) $(MALLOC) $(SYSLIB)
|
||||
ELIBS = $(INPLIB) $(CH3LIB) $(EMMESLIB) $(EMELIB) \
|
||||
$(PRTLIB) $(STRLIB) $(SYSLIB)
|
||||
$(PRTLIB) $(STRLIB) $(ALLOCLIB) $(MALLOC) $(SYSLIB)
|
||||
LIB_INCLUDES = -I$(EMHOME)/modules/h -I$(EMHOME)/modules/pkg
|
||||
EM_INCLUDES = -I$(EMHOME)/h
|
||||
SYSLLIB = $(EMHOME)/modules/lib/llib-lsys.ln
|
||||
|
@ -34,9 +36,10 @@ PRTLLIB = $(EMHOME)/modules/lib/llib-lprint.ln
|
|||
EMMESLLIB = $(EMHOME)/modules/lib/llib-lmes.ln
|
||||
INPLLIB = $(EMHOME)/modules/lib/llib-linput.ln
|
||||
CH3LLIB = $(EMHOME)/modules/lib/llib-lch3.ln
|
||||
ALLOCLLIB = $(EMHOME)/modules/lib/llib-alloc.ln
|
||||
LINTLIBS =
|
||||
#LINTLIBS = $(CH3LLIB) $(INPLLIB) $(EMMESLLIB) $(EMKLLIB) \
|
||||
# $(PRTLLIB) $(STRLLIB) $(SYSLLIB)
|
||||
# $(PRTLLIB) $(STRLLIB) $(SYSLLIB) $(ALLOCLLIB)
|
||||
|
||||
# Where to install the compiler and its driver
|
||||
CEMCOM = $(DESTINATION)/cemcom
|
||||
|
@ -58,16 +61,17 @@ CFLAGS = $(CDEFS) $(COPTIONS) -O# we cannot pass the COPTIONS to lint!
|
|||
|
||||
# Grammar files and their objects
|
||||
LSRC = tokenfile.g declar.g statement.g expression.g program.g
|
||||
GLCSRC = tokenfile.c declar.c statement.c expression.c program.c
|
||||
LOBJ = tokenfile.o declar.o statement.o expression.o program.o Lpars.o
|
||||
|
||||
# Objects of hand-written C files
|
||||
COBJ = main.o idf.o declarator.o decspecs.o struct.o \
|
||||
expr.o ch7.o ch7bin.o cstoper.o arith.o \
|
||||
alloc.o asm.o code.o dumpidf.o error.o field.o\
|
||||
asm.o code.o dumpidf.o error.o field.o\
|
||||
tokenname.o LLlex.o LLmessage.o \
|
||||
input.o domacro.o replace.o init.o options.o \
|
||||
scan.o skip.o stack.o type.o ch7mon.o label.o eval.o \
|
||||
switch.o storage.o ival.o conversion.o \
|
||||
switch.o ival.o conversion.o \
|
||||
blocks.o dataflow.o
|
||||
|
||||
# Objects of other generated C files
|
||||
|
@ -81,13 +85,13 @@ GSRC = char.c symbol2str.c next.c \
|
|||
# .h files generated by `make hfiles'; PLEASE KEEP THIS UP-TO-DATE!
|
||||
GHSRC = botch_free.h dataflow.h debug.h density.h errout.h \
|
||||
idepth.h idfsize.h ifdepth.h inputtype.h inumlength.h lapbuf.h \
|
||||
maxincl.h myalloc.h nobitfield.h nofloat.h nopp.h \
|
||||
maxincl.h nobitfield.h nofloat.h nopp.h \
|
||||
nparams.h numsize.h parbufsize.h pathlength.h \
|
||||
strsize.h target_sizes.h textsize.h use_tmp.h spec_arith.h static.h
|
||||
|
||||
# Other generated files, for 'make clean' only
|
||||
GENERATED = tab tokenfile.g Lpars.h LLfiles LL.output lint.out \
|
||||
print Xref lxref hfiles cfiles
|
||||
print Xref lxref hfiles cfiles $(GLCSRC)
|
||||
|
||||
# include files containing ALLOCDEF specifications
|
||||
NEXTFILES = code.str declar.str decspecs.str def.str expr.str field.str \
|
||||
|
@ -211,47 +215,45 @@ sim: cfiles
|
|||
$(SIM) $(SIMFLAGS) `sources $(COBJ)` $(GSRC) $(LSRC)
|
||||
|
||||
#AUTOAUTOAUTOAUTOAUTOAUTOAUTOAUTOAUTOAUTO
|
||||
main.o: LLlex.h Lpars.h alloc.h arith.h debug.h declar.h file_info.h idf.h input.h inputtype.h level.h maxincl.h myalloc.h nobitfield.h nofloat.h nopp.h spec_arith.h specials.h target_sizes.h tokenname.h type.h use_tmp.h
|
||||
idf.o: LLlex.h Lpars.h align.h alloc.h arith.h assert.h botch_free.h debug.h declar.h decspecs.h def.h file_info.h idf.h idfsize.h label.h level.h nobitfield.h nofloat.h nopp.h sizes.h spec_arith.h specials.h stack.h storage.h struct.h type.h
|
||||
declarator.o: Lpars.h alloc.h arith.h botch_free.h declar.h expr.h idf.h label.h nobitfield.h nofloat.h nopp.h sizes.h spec_arith.h storage.h type.h
|
||||
main.o: LLlex.h Lpars.h arith.h debug.h declar.h file_info.h idf.h input.h inputtype.h level.h maxincl.h nobitfield.h nofloat.h nopp.h spec_arith.h specials.h target_sizes.h tokenname.h type.h use_tmp.h
|
||||
idf.o: LLlex.h Lpars.h align.h arith.h assert.h botch_free.h debug.h declar.h decspecs.h def.h file_info.h idf.h idfsize.h label.h level.h nobitfield.h nofloat.h nopp.h sizes.h spec_arith.h specials.h stack.h struct.h type.h
|
||||
declarator.o: Lpars.h arith.h botch_free.h declar.h expr.h idf.h label.h nobitfield.h nofloat.h nopp.h sizes.h spec_arith.h type.h
|
||||
decspecs.o: Lpars.h arith.h decspecs.h def.h level.h nobitfield.h nofloat.h spec_arith.h type.h
|
||||
struct.o: LLlex.h Lpars.h align.h arith.h assert.h botch_free.h debug.h def.h field.h file_info.h idf.h level.h nobitfield.h nofloat.h nopp.h sizes.h spec_arith.h stack.h storage.h struct.h type.h
|
||||
expr.o: LLlex.h Lpars.h alloc.h arith.h botch_free.h declar.h decspecs.h def.h expr.h file_info.h idf.h label.h level.h nobitfield.h nofloat.h nopp.h sizes.h spec_arith.h storage.h type.h
|
||||
struct.o: LLlex.h Lpars.h align.h arith.h assert.h botch_free.h debug.h def.h field.h file_info.h idf.h level.h nobitfield.h nofloat.h nopp.h sizes.h spec_arith.h stack.h struct.h type.h
|
||||
expr.o: LLlex.h Lpars.h arith.h botch_free.h declar.h decspecs.h def.h expr.h file_info.h idf.h label.h level.h nobitfield.h nofloat.h nopp.h sizes.h spec_arith.h type.h
|
||||
ch7.o: Lpars.h arith.h assert.h debug.h def.h expr.h idf.h label.h nobitfield.h nofloat.h nopp.h spec_arith.h struct.h type.h
|
||||
ch7bin.o: Lpars.h arith.h botch_free.h expr.h idf.h label.h nobitfield.h nofloat.h nopp.h spec_arith.h storage.h struct.h type.h
|
||||
ch7bin.o: Lpars.h arith.h botch_free.h expr.h idf.h label.h nobitfield.h nofloat.h nopp.h spec_arith.h struct.h type.h
|
||||
cstoper.o: Lpars.h arith.h assert.h debug.h expr.h idf.h label.h nobitfield.h nofloat.h nopp.h sizes.h spec_arith.h target_sizes.h type.h
|
||||
arith.o: Lpars.h alloc.h arith.h botch_free.h expr.h field.h idf.h label.h mes.h nobitfield.h nofloat.h nopp.h spec_arith.h storage.h type.h
|
||||
alloc.o: alloc.h assert.h debug.h myalloc.h
|
||||
code.o: LLlex.h Lpars.h alloc.h arith.h assert.h atw.h botch_free.h code.h dataflow.h debug.h declar.h decspecs.h def.h expr.h file_info.h idf.h label.h level.h mes.h nobitfield.h nofloat.h nopp.h sizes.h spec_arith.h specials.h stack.h stmt.h storage.h type.h use_tmp.h
|
||||
arith.o: Lpars.h arith.h botch_free.h expr.h field.h idf.h label.h mes.h nobitfield.h nofloat.h nopp.h spec_arith.h type.h
|
||||
code.o: LLlex.h Lpars.h arith.h assert.h atw.h botch_free.h code.h dataflow.h debug.h declar.h decspecs.h def.h expr.h file_info.h idf.h label.h level.h mes.h nobitfield.h nofloat.h nopp.h sizes.h spec_arith.h specials.h stack.h stmt.h type.h use_tmp.h
|
||||
dumpidf.o: Lpars.h arith.h debug.h def.h expr.h field.h idf.h label.h nobitfield.h nofloat.h nopp.h spec_arith.h stack.h static.h struct.h type.h
|
||||
error.o: LLlex.h arith.h debug.h errout.h expr.h file_info.h label.h nofloat.h nopp.h spec_arith.h tokenname.h use_tmp.h
|
||||
field.o: Lpars.h arith.h assert.h code.h debug.h expr.h field.h idf.h label.h nobitfield.h nofloat.h nopp.h sizes.h spec_arith.h type.h
|
||||
tokenname.o: LLlex.h Lpars.h arith.h file_info.h idf.h nofloat.h nopp.h spec_arith.h tokenname.h
|
||||
LLlex.o: LLlex.h Lpars.h alloc.h arith.h assert.h class.h debug.h def.h file_info.h idf.h idfsize.h input.h nofloat.h nopp.h numsize.h sizes.h spec_arith.h strsize.h
|
||||
LLmessage.o: LLlex.h Lpars.h alloc.h arith.h file_info.h idf.h nofloat.h nopp.h spec_arith.h
|
||||
LLlex.o: LLlex.h Lpars.h arith.h assert.h class.h debug.h def.h file_info.h idf.h idfsize.h input.h nofloat.h nopp.h numsize.h sizes.h spec_arith.h strsize.h
|
||||
LLmessage.o: LLlex.h Lpars.h arith.h file_info.h idf.h nofloat.h nopp.h spec_arith.h
|
||||
input.o: file_info.h input.h inputtype.h nopp.h
|
||||
domacro.o: LLlex.h Lpars.h alloc.h arith.h assert.h botch_free.h class.h debug.h file_info.h idf.h idfsize.h ifdepth.h input.h interface.h macro.h nofloat.h nopp.h nparams.h parbufsize.h spec_arith.h storage.h textsize.h
|
||||
replace.o: LLlex.h alloc.h arith.h assert.h class.h debug.h file_info.h idf.h input.h interface.h macro.h nofloat.h nopp.h pathlength.h spec_arith.h static.h strsize.h
|
||||
init.o: alloc.h class.h idf.h interface.h macro.h nopp.h
|
||||
options.o: align.h arith.h class.h idf.h idfsize.h macro.h maxincl.h nobitfield.h nofloat.h nopp.h sizes.h spec_arith.h storage.h use_tmp.h
|
||||
domacro.o: LLlex.h Lpars.h arith.h assert.h botch_free.h class.h debug.h file_info.h idf.h idfsize.h ifdepth.h input.h interface.h macro.h nofloat.h nopp.h nparams.h parbufsize.h spec_arith.h textsize.h
|
||||
replace.o: LLlex.h arith.h assert.h class.h debug.h file_info.h idf.h input.h interface.h macro.h nofloat.h nopp.h pathlength.h spec_arith.h static.h strsize.h
|
||||
init.o: class.h idf.h interface.h macro.h nopp.h
|
||||
options.o: align.h arith.h botch_free.h class.h idf.h idfsize.h macro.h maxincl.h nobitfield.h nofloat.h nopp.h sizes.h spec_arith.h use_tmp.h
|
||||
scan.o: class.h idf.h input.h interface.h lapbuf.h macro.h nopp.h nparams.h
|
||||
skip.o: LLlex.h arith.h class.h file_info.h input.h interface.h nofloat.h nopp.h spec_arith.h
|
||||
stack.o: Lpars.h alloc.h arith.h botch_free.h debug.h def.h idf.h level.h mes.h nobitfield.h nofloat.h nopp.h spec_arith.h stack.h storage.h struct.h type.h use_tmp.h
|
||||
type.o: Lpars.h align.h alloc.h arith.h def.h idf.h nobitfield.h nofloat.h nopp.h sizes.h spec_arith.h storage.h type.h
|
||||
ch7mon.o: Lpars.h arith.h botch_free.h def.h expr.h idf.h label.h nobitfield.h nofloat.h nopp.h spec_arith.h storage.h type.h
|
||||
stack.o: Lpars.h arith.h botch_free.h debug.h def.h idf.h level.h mes.h nobitfield.h nofloat.h nopp.h spec_arith.h stack.h struct.h type.h use_tmp.h
|
||||
type.o: Lpars.h align.h arith.h botch_free.h def.h idf.h nobitfield.h nofloat.h nopp.h sizes.h spec_arith.h type.h
|
||||
ch7mon.o: Lpars.h arith.h botch_free.h def.h expr.h idf.h label.h nobitfield.h nofloat.h nopp.h spec_arith.h type.h
|
||||
label.o: Lpars.h arith.h def.h idf.h label.h level.h nobitfield.h nofloat.h nopp.h spec_arith.h type.h
|
||||
eval.o: Lpars.h align.h arith.h assert.h atw.h code.h dataflow.h debug.h def.h expr.h idf.h label.h level.h mes.h nobitfield.h nofloat.h nopp.h sizes.h spec_arith.h stack.h type.h
|
||||
switch.o: Lpars.h arith.h assert.h botch_free.h code.h debug.h density.h expr.h idf.h label.h nobitfield.h nofloat.h nopp.h spec_arith.h storage.h switch.h type.h
|
||||
storage.o: alloc.h assert.h botch_free.h debug.h storage.h
|
||||
switch.o: Lpars.h arith.h assert.h botch_free.h code.h debug.h density.h expr.h idf.h label.h nobitfield.h nofloat.h nopp.h spec_arith.h switch.h type.h
|
||||
ival.o: Lpars.h align.h arith.h assert.h class.h debug.h def.h expr.h field.h idf.h label.h level.h nobitfield.h nofloat.h nopp.h sizes.h spec_arith.h struct.h type.h
|
||||
conversion.o: Lpars.h arith.h nobitfield.h nofloat.h sizes.h spec_arith.h type.h
|
||||
blocks.o: arith.h atw.h label.h nofloat.h sizes.h spec_arith.h stack.h
|
||||
dataflow.o: dataflow.h
|
||||
tokenfile.o: Lpars.h
|
||||
declar.o: LLlex.h Lpars.h arith.h debug.h declar.h decspecs.h def.h expr.h field.h file_info.h idf.h label.h nobitfield.h nofloat.h nopp.h sizes.h spec_arith.h storage.h struct.h type.h
|
||||
statement.o: LLlex.h Lpars.h arith.h botch_free.h code.h debug.h def.h expr.h file_info.h idf.h label.h nobitfield.h nofloat.h nopp.h spec_arith.h stack.h storage.h type.h
|
||||
declar.o: LLlex.h Lpars.h arith.h debug.h declar.h decspecs.h def.h expr.h field.h file_info.h idf.h label.h nobitfield.h nofloat.h nopp.h sizes.h spec_arith.h struct.h type.h
|
||||
statement.o: LLlex.h Lpars.h arith.h botch_free.h code.h debug.h def.h expr.h file_info.h idf.h label.h nobitfield.h nofloat.h nopp.h spec_arith.h stack.h type.h
|
||||
expression.o: LLlex.h Lpars.h arith.h expr.h file_info.h idf.h label.h nobitfield.h nofloat.h nopp.h spec_arith.h type.h
|
||||
program.o: LLlex.h Lpars.h alloc.h arith.h code.h declar.h decspecs.h def.h expr.h file_info.h idf.h label.h nobitfield.h nofloat.h nopp.h spec_arith.h type.h
|
||||
program.o: LLlex.h Lpars.h arith.h code.h declar.h decspecs.h def.h expr.h file_info.h idf.h label.h nobitfield.h nofloat.h nopp.h spec_arith.h type.h
|
||||
Lpars.o: Lpars.h
|
||||
char.o: class.h
|
||||
symbol2str.o: Lpars.h
|
||||
|
|
|
@ -1,9 +1,3 @@
|
|||
!File: myalloc.h
|
||||
#define OWNALLOC 1 /* use own superfast allocation */
|
||||
#define ALLOCSIZ 4096 /* allocate pieces of 4K */
|
||||
#define ALIGNSIZE 8 /* needed for alloc.c */
|
||||
|
||||
|
||||
!File: pathlength.h
|
||||
#define PATHLENGTH 1024 /* max. length of path to file */
|
||||
|
||||
|
@ -35,7 +29,7 @@
|
|||
|
||||
|
||||
!File: maxincl.h
|
||||
#define MAXINCL 8 /* maximum number of #include directories */
|
||||
#define MAXINCL 12 /* maximum number of #include directories */
|
||||
|
||||
|
||||
!File: density.h
|
||||
|
|
|
@ -7,17 +7,16 @@
|
|||
semantics of C is a mess.
|
||||
*/
|
||||
|
||||
#include "nofloat.h"
|
||||
#include "botch_free.h"
|
||||
#include <alloc.h>
|
||||
#include "nofloat.h"
|
||||
#include "nobitfield.h"
|
||||
#include "alloc.h"
|
||||
#include "idf.h"
|
||||
#include "arith.h"
|
||||
#include "type.h"
|
||||
#include "label.h"
|
||||
#include "expr.h"
|
||||
#include "Lpars.h"
|
||||
#include "storage.h"
|
||||
#include "field.h"
|
||||
#include "mes.h"
|
||||
|
||||
|
@ -202,7 +201,6 @@ arith2arith(tp, oper, expr)
|
|||
*/
|
||||
register struct expr *new = new_expr();
|
||||
|
||||
clear((char *)new, sizeof(struct expr));
|
||||
new->ex_file = expr->ex_file;
|
||||
new->ex_line = expr->ex_line;
|
||||
new->ex_type = tp;
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
/* $Header$ */
|
||||
/* SEMANTIC ANALYSIS (CHAPTER 7RM) -- BINARY OPERATORS */
|
||||
|
||||
#include "nofloat.h"
|
||||
#include "botch_free.h"
|
||||
#include <alloc.h>
|
||||
#include "nofloat.h"
|
||||
#include "idf.h"
|
||||
#include "arith.h"
|
||||
#include "type.h"
|
||||
|
@ -10,7 +11,6 @@
|
|||
#include "label.h"
|
||||
#include "expr.h"
|
||||
#include "Lpars.h"
|
||||
#include "storage.h"
|
||||
|
||||
extern char options[];
|
||||
extern char *symbol2str();
|
||||
|
|
|
@ -1,15 +1,15 @@
|
|||
/* $Header$ */
|
||||
/* SEMANTIC ANALYSIS (CHAPTER 7RM) -- MONADIC OPERATORS */
|
||||
|
||||
#include "botch_free.h"
|
||||
#include <alloc.h>
|
||||
#include "nofloat.h"
|
||||
#include "nobitfield.h"
|
||||
#include "botch_free.h"
|
||||
#include "Lpars.h"
|
||||
#include "arith.h"
|
||||
#include "type.h"
|
||||
#include "label.h"
|
||||
#include "expr.h"
|
||||
#include "storage.h"
|
||||
#include "idf.h"
|
||||
#include "def.h"
|
||||
|
||||
|
|
|
@ -1,18 +1,18 @@
|
|||
/* $Header$ */
|
||||
/* C O D E - G E N E R A T I N G R O U T I N E S */
|
||||
|
||||
#include "nofloat.h"
|
||||
#include <em.h>
|
||||
#include "botch_free.h"
|
||||
#include <alloc.h>
|
||||
#include "nofloat.h"
|
||||
#include "dataflow.h"
|
||||
#include "use_tmp.h"
|
||||
#include "botch_free.h"
|
||||
#include "arith.h"
|
||||
#include "type.h"
|
||||
#include "idf.h"
|
||||
#include "label.h"
|
||||
#include "code.h"
|
||||
#include "stmt.h"
|
||||
#include "alloc.h"
|
||||
#include "def.h"
|
||||
#include "expr.h"
|
||||
#include "sizes.h"
|
||||
|
@ -24,7 +24,6 @@
|
|||
#include "mes.h"
|
||||
#include "LLlex.h"
|
||||
#include "specials.h"
|
||||
#include "storage.h"
|
||||
#include "atw.h"
|
||||
#include "assert.h"
|
||||
|
||||
|
@ -47,9 +46,10 @@ init_code(dst_file)
|
|||
C_init(word_size, pointer_size); /* initialise EM module */
|
||||
if (C_open(dst_file) == 0)
|
||||
fatal("cannot write to %s\n", dst_file);
|
||||
#ifndef USE_TMP
|
||||
famous_first_words();
|
||||
#ifdef USE_TMP
|
||||
if (options['N'])
|
||||
#endif USE_TMP
|
||||
famous_first_words();
|
||||
}
|
||||
|
||||
famous_first_words()
|
||||
|
@ -171,7 +171,9 @@ begin_proc(name, def) /* to be called when entering a procedure */
|
|||
arith size;
|
||||
register struct type *tp = def->df_type;
|
||||
|
||||
#ifndef USE_TMP
|
||||
#ifdef USE_TMP
|
||||
if (options['N']) code_scope(name,def);
|
||||
#else USE_TMP
|
||||
code_scope(name, def);
|
||||
#endif USE_TMP
|
||||
#ifdef DATAFLOW
|
||||
|
@ -326,9 +328,10 @@ code_declaration(idf, expr, lvl, sc)
|
|||
)
|
||||
def->df_alloc = ALLOC_SEEN;
|
||||
if (expr) { /* code only if initialized */
|
||||
#ifndef USE_TMP
|
||||
#ifdef USE_TMP
|
||||
if (options['N'])
|
||||
#endif USE_TMP
|
||||
code_scope(text, def);
|
||||
#endif USE_TMP
|
||||
def->df_alloc = ALLOC_DONE;
|
||||
C_df_dnam(text);
|
||||
do_ival(&(def->df_type), expr);
|
||||
|
@ -364,9 +367,10 @@ code_declaration(idf, expr, lvl, sc)
|
|||
case GLOBAL:
|
||||
case IMPLICIT:
|
||||
/* we are sure there is no expression */
|
||||
#ifndef USE_TMP
|
||||
code_scope(text, def);
|
||||
#ifdef USE_TMP
|
||||
if (options['N'])
|
||||
#endif USE_TMP
|
||||
code_scope(text, def);
|
||||
break;
|
||||
case AUTO:
|
||||
case REGISTER:
|
||||
|
@ -433,9 +437,10 @@ bss(idf)
|
|||
*/
|
||||
arith size = idf->id_def->df_type->tp_size;
|
||||
|
||||
#ifndef USE_TMP
|
||||
code_scope(idf->id_text, idf->id_def);
|
||||
#ifdef USE_TMP
|
||||
if (options['N'])
|
||||
#endif USE_TMP
|
||||
code_scope(idf->id_text, idf->id_def);
|
||||
/* Since bss() is only called if df_alloc is non-zero, and
|
||||
since df_alloc is only non-zero if size >= 0, we have:
|
||||
*/
|
||||
|
|
|
@ -8,7 +8,7 @@ struct string_cst { /* storing string constants */
|
|||
label sc_dlb;
|
||||
};
|
||||
|
||||
/* ALLOCDEF "string_cst" */
|
||||
/* ALLOCDEF "string_cst" 10 */
|
||||
|
||||
#define LVAL 0
|
||||
#define RVAL 1
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
/* DECLARATION SYNTAX PARSER */
|
||||
|
||||
{
|
||||
#include <alloc.h>
|
||||
#include "nobitfield.h"
|
||||
#include "debug.h"
|
||||
#include "arith.h"
|
||||
|
@ -16,7 +17,6 @@
|
|||
#include "label.h"
|
||||
#include "expr.h"
|
||||
#include "sizes.h"
|
||||
#include "storage.h"
|
||||
|
||||
extern char options[];
|
||||
}
|
||||
|
|
|
@ -13,7 +13,7 @@ struct declarator {
|
|||
struct formal *dc_formal; /* params for function */
|
||||
};
|
||||
|
||||
/* ALLOCDEF "declarator" */
|
||||
/* ALLOCDEF "declarator" 50 */
|
||||
|
||||
|
||||
struct formal { /* list of formals */
|
||||
|
@ -21,7 +21,7 @@ struct formal { /* list of formals */
|
|||
struct idf *fm_idf;
|
||||
};
|
||||
|
||||
/* ALLOCDEF "formal" */
|
||||
/* ALLOCDEF "formal" 5 */
|
||||
|
||||
#define NO_PARAMS ((struct formal *) 0)
|
||||
|
||||
|
@ -31,7 +31,7 @@ struct decl_unary {
|
|||
arith du_count; /* for ARRAYs only */
|
||||
};
|
||||
|
||||
/* ALLOCDEF "decl_unary" */
|
||||
/* ALLOCDEF "decl_unary" 10 */
|
||||
|
||||
extern struct type *declare_type();
|
||||
extern struct declarator null_declarator;
|
||||
|
|
|
@ -2,12 +2,11 @@
|
|||
/* D E C L A R A T O R M A N I P U L A T I O N */
|
||||
|
||||
#include "botch_free.h"
|
||||
#include "alloc.h"
|
||||
#include <alloc.h>
|
||||
#include "arith.h"
|
||||
#include "type.h"
|
||||
#include "Lpars.h"
|
||||
#include "declar.h"
|
||||
#include "storage.h"
|
||||
#include "idf.h"
|
||||
#include "label.h"
|
||||
#include "expr.h"
|
||||
|
@ -43,7 +42,6 @@ add_decl_unary(dc, fund, count, fm)
|
|||
*/
|
||||
register struct decl_unary *new = new_decl_unary();
|
||||
|
||||
clear((char *)new, sizeof(struct decl_unary));
|
||||
new->next = dc->dc_decl_unary;
|
||||
new->du_fund = fund;
|
||||
new->du_count = count;
|
||||
|
|
|
@ -10,6 +10,6 @@ struct decspecs {
|
|||
int ds_unsigned; /* 0 or 1 */
|
||||
};
|
||||
|
||||
/* ALLOCDEF "decspecs" */
|
||||
/* ALLOCDEF "decspecs" 50 */
|
||||
|
||||
extern struct decspecs null_decspecs;
|
||||
|
|
|
@ -26,4 +26,4 @@ struct def { /* for ordinary tags */
|
|||
#define REG_DEFAULT 1 /* register candidate, not declared as such */
|
||||
#define REG_BONUS 10 /* register candidate, declared as such */
|
||||
|
||||
/* ALLOCDEF "def" */
|
||||
/* ALLOCDEF "def" 50 */
|
||||
|
|
|
@ -18,10 +18,9 @@
|
|||
#include "textsize.h"
|
||||
#include "idfsize.h"
|
||||
#include "assert.h"
|
||||
#include "alloc.h"
|
||||
#include <alloc.h>
|
||||
#include "class.h"
|
||||
#include "macro.h"
|
||||
#include "storage.h"
|
||||
|
||||
IMPORT char *inctable[]; /* list of include directories */
|
||||
IMPORT char *getwdir();
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
#include "nofloat.h"
|
||||
#include "botch_free.h"
|
||||
#include "alloc.h"
|
||||
#include <alloc.h>
|
||||
#include "idf.h"
|
||||
#include "arith.h"
|
||||
#include "def.h"
|
||||
|
@ -14,7 +14,6 @@
|
|||
#include "Lpars.h"
|
||||
#include "decspecs.h"
|
||||
#include "declar.h"
|
||||
#include "storage.h"
|
||||
#include "sizes.h"
|
||||
#include "level.h"
|
||||
|
||||
|
@ -122,7 +121,6 @@ dot2expr(expp)
|
|||
pointer to which is stored in *expp.
|
||||
*/
|
||||
*expp = new_expr();
|
||||
clear((char *)*expp, sizeof(struct expr));
|
||||
(*expp)->ex_file = dot.tk_file;
|
||||
(*expp)->ex_line = dot.tk_line;
|
||||
switch (DOT) {
|
||||
|
@ -248,7 +246,6 @@ intexpr(ivalue, fund)
|
|||
*/
|
||||
register struct expr *expr = new_expr();
|
||||
|
||||
clear((char *)expr, sizeof(struct expr));
|
||||
expr->ex_file = dot.tk_file;
|
||||
expr->ex_line = dot.tk_line;
|
||||
fill_int_expr(expr, ivalue, fund);
|
||||
|
@ -308,7 +305,6 @@ new_oper(tp, e1, oper, e2)
|
|||
register struct expr *expr = new_expr();
|
||||
register struct oper *op;
|
||||
|
||||
clear((char *)expr, sizeof(struct expr));
|
||||
if (e2) {
|
||||
register struct expr *e = e2;
|
||||
|
||||
|
|
|
@ -101,6 +101,6 @@ struct expr {
|
|||
|
||||
extern struct expr *intexpr(), *new_oper();
|
||||
|
||||
/* ALLOCDEF "expr" */
|
||||
/* ALLOCDEF "expr" 50 */
|
||||
|
||||
#define ISCOMMA(e) ((e)->ex_class == Oper && (e)->OP_OPER == INITCOMMA)
|
||||
|
|
|
@ -9,4 +9,4 @@ struct field { /* for field specifiers */
|
|||
struct sdef *fd_sdef; /* upward pointer */
|
||||
};
|
||||
|
||||
/* ALLOCDEF "field" */
|
||||
/* ALLOCDEF "field" 50 */
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
#include "idfsize.h"
|
||||
#include "botch_free.h"
|
||||
#include "nopp.h"
|
||||
#include "alloc.h"
|
||||
#include <alloc.h>
|
||||
#include "arith.h"
|
||||
#include "align.h"
|
||||
#include "LLlex.h"
|
||||
|
@ -23,7 +23,6 @@
|
|||
#include "Lpars.h"
|
||||
#include "assert.h"
|
||||
#include "specials.h" /* registration of special identifiers */
|
||||
#include "storage.h"
|
||||
|
||||
int idfsize = IDFSIZE;
|
||||
extern char options[];
|
||||
|
@ -73,7 +72,6 @@ idf_hashed(tg, size, hc)
|
|||
}
|
||||
/* a new struct idf must be inserted at the hook */
|
||||
notch = new_idf();
|
||||
clear((char *)notch, sizeof(struct idf));
|
||||
notch->next = *hook;
|
||||
*hook = notch; /* hooked in */
|
||||
notch->id_text = Salloc(tg, size);
|
||||
|
@ -303,7 +301,6 @@ declare_idf(ds, dc, lvl)
|
|||
else { /* fill in the def block */
|
||||
register struct def *newdef = new_def();
|
||||
|
||||
clear((char *)newdef, sizeof(struct def));
|
||||
newdef->next = def;
|
||||
newdef->df_level = lvl;
|
||||
newdef->df_type = type;
|
||||
|
|
|
@ -37,7 +37,7 @@ struct idf {
|
|||
int id_special; /* special action needed at occurrence */
|
||||
};
|
||||
|
||||
/* ALLOCDEF "idf" */
|
||||
/* ALLOCDEF "idf" 50 */
|
||||
|
||||
extern struct idf *str2idf(), *idf_hashed();
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
|
||||
#ifndef NOPP
|
||||
#include <system.h>
|
||||
#include "alloc.h"
|
||||
#include <alloc.h>
|
||||
#include "class.h"
|
||||
#include "macro.h"
|
||||
#include "idf.h"
|
||||
|
|
|
@ -27,7 +27,7 @@ struct macro {
|
|||
char mc_flag; /* marking this macro */
|
||||
};
|
||||
|
||||
/* ALLOCDEF "macro" */
|
||||
/* ALLOCDEF "macro" 20 */
|
||||
|
||||
/* `token' numbers of keywords of command-line processor
|
||||
*/
|
||||
|
|
|
@ -6,7 +6,6 @@
|
|||
#include "nopp.h"
|
||||
#include "target_sizes.h"
|
||||
#include "debug.h"
|
||||
#include "myalloc.h"
|
||||
#include "use_tmp.h"
|
||||
#include "maxincl.h"
|
||||
#include "inputtype.h"
|
||||
|
@ -19,7 +18,7 @@
|
|||
#include "tokenname.h"
|
||||
#include "Lpars.h"
|
||||
#include "LLlex.h"
|
||||
#include "alloc.h"
|
||||
#include <alloc.h>
|
||||
#include "specials.h"
|
||||
|
||||
extern struct tokenname tkidf[], tkother[];
|
||||
|
@ -79,10 +78,6 @@ main(argc, argv)
|
|||
/* parse and interpret the command line options */
|
||||
prog_name = argv[0];
|
||||
|
||||
#ifdef OWNALLOC
|
||||
init_mem();
|
||||
#endif OWNALLOC
|
||||
|
||||
init_hmask();
|
||||
|
||||
#ifndef NOPP
|
||||
|
@ -106,12 +101,6 @@ main(argc, argv)
|
|||
}
|
||||
compile(argc - 1, &argv[1]);
|
||||
|
||||
#ifdef OWNALLOC
|
||||
#ifdef DEBUG
|
||||
mem_stat();
|
||||
#endif DEBUG
|
||||
#endif OWNALLOC
|
||||
|
||||
#ifdef DEBUG
|
||||
hash_stat();
|
||||
#endif DEBUG
|
||||
|
@ -164,9 +153,11 @@ compile(argc, argv)
|
|||
source = strcmp(argv[0], "-") ? argv[0] : 0;
|
||||
|
||||
#ifdef USE_TMP
|
||||
strcpy(tmpf, tmpfdir);
|
||||
strcat(tmpf, tmpfname);
|
||||
tmpfile = mktemp(tmpf);
|
||||
if (! options['N']) {
|
||||
strcpy(tmpf, tmpfdir);
|
||||
strcat(tmpf, tmpfname);
|
||||
tmpfile = mktemp(tmpf);
|
||||
}
|
||||
#endif USE_TMP
|
||||
|
||||
if (destination && strcmp(destination, "-") == 0)
|
||||
|
@ -189,7 +180,11 @@ compile(argc, argv)
|
|||
#endif NOPP
|
||||
|
||||
#ifdef USE_TMP
|
||||
init_code(tmpfile);
|
||||
if (!options['N']) {
|
||||
init_code(tmpfile);
|
||||
}
|
||||
else
|
||||
init_code(destination);
|
||||
#else USE_TMP
|
||||
init_code(destination);
|
||||
#endif USE_TMP
|
||||
|
@ -199,9 +194,11 @@ compile(argc, argv)
|
|||
end_code();
|
||||
|
||||
#ifdef USE_TMP
|
||||
prepend_scopes(destination);
|
||||
AppendFile(tmpfile, destination);
|
||||
sys_remove(tmpfile);
|
||||
if (! options['N']) {
|
||||
prepend_scopes(destination);
|
||||
AppendFile(tmpfile, destination);
|
||||
sys_remove(tmpfile);
|
||||
}
|
||||
#endif USE_TMP
|
||||
|
||||
#ifdef DEBUG
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
sed '
|
||||
s:^.*ALLOCDEF.*"\(.*\)".*$:\
|
||||
sed -e '
|
||||
s:^.*[ ]ALLOCDEF[ ].*"\(.*\)"[ ]*\([0-9][0-9]*\).*$:\
|
||||
/* allocation definitions of struct \1 */\
|
||||
extern char *st_alloc();\
|
||||
extern struct \1 *h_\1;\
|
||||
#define new_\1() ((struct \1 *) \\\
|
||||
st_alloc((char **)\&h_\1, sizeof(struct \1)))\
|
||||
#define free_\1(p) st_free(p, h_\1, sizeof(struct \1))\
|
||||
#define new_\1() ((struct \1 *) st_alloc((char **)\&h_\1, sizeof(struct \1), \2))\
|
||||
#define free_\1(p) st_free(p, \&h_\1, sizeof(struct \1))\
|
||||
:'
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
/* $Header$ */
|
||||
/* U S E R O P T I O N - H A N D L I N G */
|
||||
|
||||
#include "botch_free.h"
|
||||
#include <alloc.h>
|
||||
#include "nofloat.h"
|
||||
#include "nopp.h"
|
||||
#include "idfsize.h"
|
||||
|
@ -12,7 +14,6 @@
|
|||
#include "arith.h"
|
||||
#include "sizes.h"
|
||||
#include "align.h"
|
||||
#include "storage.h"
|
||||
#include "use_tmp.h"
|
||||
|
||||
#ifndef NOPP
|
||||
|
@ -126,6 +127,14 @@ do_option(text)
|
|||
fatal("maximum identifier length is %d", IDFSIZE);
|
||||
break;
|
||||
|
||||
case 'N' :
|
||||
#ifdef USE_TMP
|
||||
options['N'] = 1;
|
||||
#else USE_TMP
|
||||
warning("-N option ignored");
|
||||
#endif USE_TMP
|
||||
break;
|
||||
|
||||
case 'P' : /* run preprocessor stand-alone, without #'s */
|
||||
#ifndef NOPP
|
||||
options['E'] = 1;
|
||||
|
|
|
@ -42,7 +42,6 @@
|
|||
|
||||
{
|
||||
#include "nopp.h"
|
||||
#include "alloc.h"
|
||||
#include "arith.h"
|
||||
#include "LLlex.h"
|
||||
#include "idf.h"
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
#include "debug.h" /* UF */
|
||||
#include "pathlength.h" /* UF */
|
||||
#include "strsize.h" /* UF */
|
||||
#include "alloc.h"
|
||||
#include <alloc.h>
|
||||
#include "idf.h"
|
||||
#include "input.h"
|
||||
#include "macro.h"
|
||||
|
|
|
@ -6,9 +6,8 @@
|
|||
#include <em.h>
|
||||
#include <em_reg.h>
|
||||
#include "debug.h"
|
||||
#include "use_tmp.h"
|
||||
#include "botch_free.h"
|
||||
#include "alloc.h"
|
||||
#include <alloc.h>
|
||||
#include "Lpars.h"
|
||||
#include "arith.h"
|
||||
#include "stack.h"
|
||||
|
@ -16,7 +15,6 @@
|
|||
#include "idf.h"
|
||||
#include "def.h"
|
||||
#include "struct.h"
|
||||
#include "storage.h"
|
||||
#include "level.h"
|
||||
#include "mes.h"
|
||||
|
||||
|
@ -43,7 +41,6 @@ stack_level() {
|
|||
*/
|
||||
register struct stack_level *stl = new_stack_level();
|
||||
|
||||
clear((char *)stl, sizeof(struct stack_level));
|
||||
local_level->sl_next = stl;
|
||||
stl->sl_previous = local_level;
|
||||
stl->sl_level = ++level;
|
||||
|
@ -60,7 +57,6 @@ stack_idf(idf, stl)
|
|||
*/
|
||||
register struct stack_entry *se = new_stack_entry();
|
||||
|
||||
clear((char *)se, sizeof(struct stack_entry));
|
||||
/* link it into the stack level */
|
||||
se->next = stl->sl_entry;
|
||||
se->se_idf = idf;
|
||||
|
|
|
@ -16,14 +16,14 @@ struct stack_level {
|
|||
int sl_level;
|
||||
};
|
||||
|
||||
/* ALLOCDEF "stack_level" */
|
||||
/* ALLOCDEF "stack_level" 5 */
|
||||
|
||||
struct stack_entry {
|
||||
struct stack_entry *next;
|
||||
struct idf *se_idf;
|
||||
};
|
||||
|
||||
/* ALLOCDEF "stack_entry" */
|
||||
/* ALLOCDEF "stack_entry" 5 */
|
||||
|
||||
extern struct stack_level *local_level;
|
||||
extern struct stack_level *stack_level_of();
|
||||
|
|
|
@ -14,7 +14,6 @@
|
|||
#include "label.h"
|
||||
#include "expr.h"
|
||||
#include "code.h"
|
||||
#include "storage.h"
|
||||
#include "stack.h"
|
||||
#include "def.h"
|
||||
|
||||
|
|
|
@ -7,4 +7,4 @@ struct stmt_block {
|
|||
label st_continue;
|
||||
};
|
||||
|
||||
/* ALLOCDEF "stmt_block" */
|
||||
/* ALLOCDEF "stmt_block" 5 */
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
#include "nobitfield.h"
|
||||
#include "debug.h"
|
||||
#include "botch_free.h"
|
||||
#include <alloc.h>
|
||||
#include "arith.h"
|
||||
#include "stack.h"
|
||||
#include "idf.h"
|
||||
|
@ -15,7 +16,6 @@
|
|||
#include "Lpars.h"
|
||||
#include "align.h"
|
||||
#include "level.h"
|
||||
#include "storage.h"
|
||||
#include "assert.h"
|
||||
#include "sizes.h"
|
||||
|
||||
|
@ -308,7 +308,6 @@ idf2sdef(idf, tp)
|
|||
if (!is_anon_idf(idf))
|
||||
error("unknown selector %s", idf->id_text);
|
||||
*sdefp = sdef = new_sdef();
|
||||
clear((char *)sdef, sizeof(struct sdef));
|
||||
sdef->sd_idf = idf;
|
||||
sdef->sd_stype = sdef->sd_type = error_type;
|
||||
return sdef;
|
||||
|
|
|
@ -11,7 +11,7 @@ struct sdef { /* for selectors */
|
|||
arith sd_offset;
|
||||
};
|
||||
|
||||
/* ALLOCDEF "sdef" */
|
||||
/* ALLOCDEF "sdef" 50 */
|
||||
|
||||
struct tag { /* for struct-, union- and enum tags */
|
||||
struct tag *next;
|
||||
|
@ -21,6 +21,6 @@ struct tag { /* for struct-, union- and enum tags */
|
|||
};
|
||||
|
||||
|
||||
/* ALLOCDEF "tag" */
|
||||
/* ALLOCDEF "tag" 50 */
|
||||
|
||||
struct sdef *idf2sdef();
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
#include <em.h>
|
||||
#include "debug.h"
|
||||
#include "botch_free.h"
|
||||
#include <alloc.h>
|
||||
#include "density.h"
|
||||
#include "Lpars.h"
|
||||
#include "idf.h"
|
||||
|
@ -12,7 +13,6 @@
|
|||
#include "arith.h"
|
||||
#include "switch.h"
|
||||
#include "code.h"
|
||||
#include "storage.h"
|
||||
#include "assert.h"
|
||||
#include "expr.h"
|
||||
#include "type.h"
|
||||
|
|
|
@ -13,7 +13,7 @@ struct switch_hdr {
|
|||
struct case_entry *sh_entries;
|
||||
};
|
||||
|
||||
/* ALLOCDEF "switch_hdr" */
|
||||
/* ALLOCDEF "switch_hdr" 2 */
|
||||
|
||||
struct case_entry {
|
||||
struct case_entry *next;
|
||||
|
@ -21,4 +21,4 @@ struct case_entry {
|
|||
arith ce_value;
|
||||
};
|
||||
|
||||
/* ALLOCDEF "case_entry" */
|
||||
/* ALLOCDEF "case_entry" 40 */
|
||||
|
|
|
@ -3,7 +3,8 @@
|
|||
|
||||
#include "nofloat.h"
|
||||
#include "nobitfield.h"
|
||||
#include "alloc.h"
|
||||
#include "botch_free.h"
|
||||
#include <alloc.h>
|
||||
#include "Lpars.h"
|
||||
#include "arith.h"
|
||||
#include "type.h"
|
||||
|
@ -11,7 +12,6 @@
|
|||
#include "def.h"
|
||||
#include "sizes.h"
|
||||
#include "align.h"
|
||||
#include "storage.h"
|
||||
|
||||
struct type *function_of(), *array_of();
|
||||
#ifndef NOBITFIELD
|
||||
|
@ -44,7 +44,6 @@ create_type(fund)
|
|||
*/
|
||||
register struct type *ntp = new_type();
|
||||
|
||||
clear((char *)ntp, sizeof(struct type));
|
||||
ntp->tp_fund = fund;
|
||||
ntp->tp_size = (arith)-1;
|
||||
|
||||
|
|
|
@ -44,4 +44,4 @@ extern struct type *pa_type; /* type.c */
|
|||
|
||||
extern arith size_of_type(), align();
|
||||
|
||||
/* ALLOCDEF "type" */
|
||||
/* ALLOCDEF "type" 50 */
|
||||
|
|
Loading…
Reference in a new issue