Quellcode durchsuchen

removed the limitation on number of include directories

ceriel vor 37 Jahren
Ursprung
Commit
eb7d477357

+ 0 - 4
lang/cem/cemcom/BigPars

@@ -24,10 +24,6 @@
 #define	IFDEPTH	256	/* maximum number of nested if-constructions	*/
 
 
-!File: maxincl.h
-#define	MAXINCL	12	/* maximum number of #include directories	*/
-
-
 !File: density.h
 #define	DENSITY	2	/* see switch.[ch] for an explanation		*/
 

+ 2 - 4
lang/cem/cemcom/Makefile

@@ -39,7 +39,7 @@ COPTIONS =
 
 # What parser generator to use and how
 GEN = $(EMHOME)/bin/LLgen
-GENOPTIONS =
+GENOPTIONS = -v
 
 # Special #defines during compilation
 CDEFS =	$(EM_INCLUDES) $(LIB_INCLUDES)
@@ -85,7 +85,7 @@ GSRC =	$(GCSRC)  $(GHSTRSRC)
 # .h files generated by `make hfiles LLfiles'; PLEASE KEEP THIS UP-TO-DATE!
 GHSRC =	botch_free.h dataflow.h debug.h density.h errout.h \
 	idfsize.h ifdepth.h inputtype.h lapbuf.h \
-	maxincl.h nobitfield.h nofloat.h nopp.h noRoption.h nocross.h \
+	nobitfield.h nofloat.h nopp.h noRoption.h nocross.h \
 	nparams.h numsize.h parbufsize.h pathlength.h Lpars.h \
 	strsize.h target_sizes.h textsize.h use_tmp.h spec_arith.h static.h
 
@@ -218,7 +218,6 @@ main.o: idf.h
 main.o: input.h
 main.o: inputtype.h
 main.o: level.h
-main.o: maxincl.h
 main.o: noRoption.h
 main.o: nobitfield.h
 main.o: nocross.h
@@ -549,7 +548,6 @@ options.o: dataflow.h
 options.o: idf.h
 options.o: idfsize.h
 options.o: macro.h
-options.o: maxincl.h
 options.o: noRoption.h
 options.o: nobitfield.h
 options.o: nocross.h

+ 1 - 581
lang/cem/cemcom/Makefile.erik

@@ -85,7 +85,7 @@ 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 \
 	idfsize.h ifdepth.h inputtype.h inumlength.h lapbuf.h \
-	maxincl.h nobitfield.h nofloat.h nopp.h noRoption.h nocross.h \
+	nobitfield.h nofloat.h nopp.h noRoption.h nocross.h \
 	nparams.h numsize.h parbufsize.h pathlength.h \
 	strsize.h target_sizes.h textsize.h use_tmp.h spec_arith.h static.h
 
@@ -217,583 +217,3 @@ sim:	cfiles
 	$(SIM) $(SIMFLAGS) `sources $(COBJ)` $(GSRC) $(LSRC)
 
 #AUTOAUTOAUTOAUTOAUTOAUTOAUTOAUTOAUTOAUTO
-main.o: LLlex.h
-main.o: Lpars.h
-main.o: align.h
-main.o: arith.h
-main.o: debug.h
-main.o: declar.h
-main.o: file_info.h
-main.o: idf.h
-main.o: input.h
-main.o: inputtype.h
-main.o: level.h
-main.o: maxincl.h
-main.o: noRoption.h
-main.o: nobitfield.h
-main.o: nocross.h
-main.o: nofloat.h
-main.o: nopp.h
-main.o: sizes.h
-main.o: spec_arith.h
-main.o: specials.h
-main.o: target_sizes.h
-main.o: tokenname.h
-main.o: type.h
-main.o: use_tmp.h
-idf.o: LLlex.h
-idf.o: Lpars.h
-idf.o: align.h
-idf.o: arith.h
-idf.o: assert.h
-idf.o: botch_free.h
-idf.o: debug.h
-idf.o: declar.h
-idf.o: decspecs.h
-idf.o: def.h
-idf.o: file_info.h
-idf.o: idf.h
-idf.o: idfsize.h
-idf.o: label.h
-idf.o: level.h
-idf.o: noRoption.h
-idf.o: nobitfield.h
-idf.o: nocross.h
-idf.o: nofloat.h
-idf.o: nopp.h
-idf.o: sizes.h
-idf.o: spec_arith.h
-idf.o: specials.h
-idf.o: stack.h
-idf.o: struct.h
-idf.o: target_sizes.h
-idf.o: type.h
-declarator.o: Lpars.h
-declarator.o: arith.h
-declarator.o: botch_free.h
-declarator.o: declar.h
-declarator.o: expr.h
-declarator.o: idf.h
-declarator.o: label.h
-declarator.o: nobitfield.h
-declarator.o: nocross.h
-declarator.o: nofloat.h
-declarator.o: nopp.h
-declarator.o: sizes.h
-declarator.o: spec_arith.h
-declarator.o: target_sizes.h
-declarator.o: type.h
-decspecs.o: Lpars.h
-decspecs.o: arith.h
-decspecs.o: decspecs.h
-decspecs.o: def.h
-decspecs.o: level.h
-decspecs.o: noRoption.h
-decspecs.o: nobitfield.h
-decspecs.o: nofloat.h
-decspecs.o: spec_arith.h
-decspecs.o: type.h
-struct.o: LLlex.h
-struct.o: Lpars.h
-struct.o: align.h
-struct.o: arith.h
-struct.o: assert.h
-struct.o: botch_free.h
-struct.o: debug.h
-struct.o: def.h
-struct.o: field.h
-struct.o: file_info.h
-struct.o: idf.h
-struct.o: level.h
-struct.o: noRoption.h
-struct.o: nobitfield.h
-struct.o: nocross.h
-struct.o: nofloat.h
-struct.o: nopp.h
-struct.o: sizes.h
-struct.o: spec_arith.h
-struct.o: stack.h
-struct.o: struct.h
-struct.o: target_sizes.h
-struct.o: type.h
-expr.o: LLlex.h
-expr.o: Lpars.h
-expr.o: arith.h
-expr.o: botch_free.h
-expr.o: declar.h
-expr.o: decspecs.h
-expr.o: def.h
-expr.o: expr.h
-expr.o: file_info.h
-expr.o: idf.h
-expr.o: label.h
-expr.o: level.h
-expr.o: noRoption.h
-expr.o: nobitfield.h
-expr.o: nocross.h
-expr.o: nofloat.h
-expr.o: nopp.h
-expr.o: sizes.h
-expr.o: spec_arith.h
-expr.o: target_sizes.h
-expr.o: type.h
-ch7.o: Lpars.h
-ch7.o: arith.h
-ch7.o: assert.h
-ch7.o: debug.h
-ch7.o: def.h
-ch7.o: expr.h
-ch7.o: idf.h
-ch7.o: label.h
-ch7.o: nobitfield.h
-ch7.o: nofloat.h
-ch7.o: nopp.h
-ch7.o: spec_arith.h
-ch7.o: struct.h
-ch7.o: type.h
-ch7bin.o: Lpars.h
-ch7bin.o: arith.h
-ch7bin.o: botch_free.h
-ch7bin.o: expr.h
-ch7bin.o: idf.h
-ch7bin.o: label.h
-ch7bin.o: noRoption.h
-ch7bin.o: nobitfield.h
-ch7bin.o: nofloat.h
-ch7bin.o: nopp.h
-ch7bin.o: spec_arith.h
-ch7bin.o: struct.h
-ch7bin.o: type.h
-cstoper.o: Lpars.h
-cstoper.o: arith.h
-cstoper.o: assert.h
-cstoper.o: debug.h
-cstoper.o: expr.h
-cstoper.o: idf.h
-cstoper.o: label.h
-cstoper.o: nobitfield.h
-cstoper.o: nocross.h
-cstoper.o: nofloat.h
-cstoper.o: nopp.h
-cstoper.o: sizes.h
-cstoper.o: spec_arith.h
-cstoper.o: target_sizes.h
-cstoper.o: type.h
-arith.o: Lpars.h
-arith.o: arith.h
-arith.o: botch_free.h
-arith.o: expr.h
-arith.o: field.h
-arith.o: idf.h
-arith.o: label.h
-arith.o: mes.h
-arith.o: noRoption.h
-arith.o: nobitfield.h
-arith.o: nofloat.h
-arith.o: nopp.h
-arith.o: spec_arith.h
-arith.o: type.h
-code.o: LLlex.h
-code.o: Lpars.h
-code.o: align.h
-code.o: arith.h
-code.o: assert.h
-code.o: atw.h
-code.o: botch_free.h
-code.o: code.h
-code.o: dataflow.h
-code.o: debug.h
-code.o: declar.h
-code.o: decspecs.h
-code.o: def.h
-code.o: expr.h
-code.o: file_info.h
-code.o: idf.h
-code.o: label.h
-code.o: level.h
-code.o: mes.h
-code.o: noRoption.h
-code.o: nobitfield.h
-code.o: nocross.h
-code.o: nofloat.h
-code.o: nopp.h
-code.o: sizes.h
-code.o: spec_arith.h
-code.o: specials.h
-code.o: stack.h
-code.o: stmt.h
-code.o: target_sizes.h
-code.o: type.h
-code.o: use_tmp.h
-dumpidf.o: Lpars.h
-dumpidf.o: arith.h
-dumpidf.o: debug.h
-dumpidf.o: def.h
-dumpidf.o: expr.h
-dumpidf.o: field.h
-dumpidf.o: idf.h
-dumpidf.o: label.h
-dumpidf.o: nobitfield.h
-dumpidf.o: nofloat.h
-dumpidf.o: nopp.h
-dumpidf.o: spec_arith.h
-dumpidf.o: stack.h
-dumpidf.o: static.h
-dumpidf.o: struct.h
-dumpidf.o: type.h
-error.o: LLlex.h
-error.o: arith.h
-error.o: debug.h
-error.o: errout.h
-error.o: expr.h
-error.o: file_info.h
-error.o: label.h
-error.o: nofloat.h
-error.o: nopp.h
-error.o: spec_arith.h
-error.o: tokenname.h
-error.o: use_tmp.h
-field.o: Lpars.h
-field.o: arith.h
-field.o: assert.h
-field.o: code.h
-field.o: debug.h
-field.o: expr.h
-field.o: field.h
-field.o: idf.h
-field.o: label.h
-field.o: nobitfield.h
-field.o: nocross.h
-field.o: nofloat.h
-field.o: nopp.h
-field.o: sizes.h
-field.o: spec_arith.h
-field.o: target_sizes.h
-field.o: type.h
-tokenname.o: LLlex.h
-tokenname.o: Lpars.h
-tokenname.o: arith.h
-tokenname.o: file_info.h
-tokenname.o: idf.h
-tokenname.o: nofloat.h
-tokenname.o: nopp.h
-tokenname.o: spec_arith.h
-tokenname.o: tokenname.h
-LLlex.o: LLlex.h
-LLlex.o: Lpars.h
-LLlex.o: arith.h
-LLlex.o: assert.h
-LLlex.o: class.h
-LLlex.o: debug.h
-LLlex.o: def.h
-LLlex.o: file_info.h
-LLlex.o: idf.h
-LLlex.o: idfsize.h
-LLlex.o: input.h
-LLlex.o: nocross.h
-LLlex.o: nofloat.h
-LLlex.o: nopp.h
-LLlex.o: numsize.h
-LLlex.o: sizes.h
-LLlex.o: spec_arith.h
-LLlex.o: strsize.h
-LLlex.o: target_sizes.h
-LLmessage.o: LLlex.h
-LLmessage.o: Lpars.h
-LLmessage.o: arith.h
-LLmessage.o: file_info.h
-LLmessage.o: idf.h
-LLmessage.o: nofloat.h
-LLmessage.o: nopp.h
-LLmessage.o: spec_arith.h
-input.o: file_info.h
-input.o: input.h
-input.o: inputtype.h
-input.o: nopp.h
-domacro.o: LLlex.h
-domacro.o: Lpars.h
-domacro.o: arith.h
-domacro.o: assert.h
-domacro.o: botch_free.h
-domacro.o: class.h
-domacro.o: debug.h
-domacro.o: file_info.h
-domacro.o: idf.h
-domacro.o: idfsize.h
-domacro.o: ifdepth.h
-domacro.o: input.h
-domacro.o: interface.h
-domacro.o: macro.h
-domacro.o: nofloat.h
-domacro.o: nopp.h
-domacro.o: nparams.h
-domacro.o: parbufsize.h
-domacro.o: spec_arith.h
-domacro.o: textsize.h
-replace.o: LLlex.h
-replace.o: arith.h
-replace.o: assert.h
-replace.o: class.h
-replace.o: debug.h
-replace.o: file_info.h
-replace.o: idf.h
-replace.o: input.h
-replace.o: interface.h
-replace.o: macro.h
-replace.o: nofloat.h
-replace.o: nopp.h
-replace.o: pathlength.h
-replace.o: spec_arith.h
-replace.o: static.h
-replace.o: strsize.h
-init.o: class.h
-init.o: idf.h
-init.o: interface.h
-init.o: macro.h
-init.o: nopp.h
-options.o: align.h
-options.o: arith.h
-options.o: botch_free.h
-options.o: class.h
-options.o: dataflow.h
-options.o: idf.h
-options.o: idfsize.h
-options.o: macro.h
-options.o: maxincl.h
-options.o: noRoption.h
-options.o: nobitfield.h
-options.o: nocross.h
-options.o: nofloat.h
-options.o: nopp.h
-options.o: sizes.h
-options.o: spec_arith.h
-options.o: target_sizes.h
-options.o: use_tmp.h
-scan.o: class.h
-scan.o: idf.h
-scan.o: input.h
-scan.o: interface.h
-scan.o: lapbuf.h
-scan.o: macro.h
-scan.o: nopp.h
-scan.o: nparams.h
-skip.o: LLlex.h
-skip.o: arith.h
-skip.o: class.h
-skip.o: file_info.h
-skip.o: input.h
-skip.o: interface.h
-skip.o: nofloat.h
-skip.o: nopp.h
-skip.o: spec_arith.h
-stack.o: Lpars.h
-stack.o: arith.h
-stack.o: botch_free.h
-stack.o: debug.h
-stack.o: def.h
-stack.o: idf.h
-stack.o: level.h
-stack.o: mes.h
-stack.o: noRoption.h
-stack.o: nobitfield.h
-stack.o: nofloat.h
-stack.o: nopp.h
-stack.o: spec_arith.h
-stack.o: stack.h
-stack.o: struct.h
-stack.o: type.h
-type.o: Lpars.h
-type.o: align.h
-type.o: arith.h
-type.o: botch_free.h
-type.o: def.h
-type.o: idf.h
-type.o: nobitfield.h
-type.o: nocross.h
-type.o: nofloat.h
-type.o: nopp.h
-type.o: sizes.h
-type.o: spec_arith.h
-type.o: target_sizes.h
-type.o: type.h
-ch7mon.o: Lpars.h
-ch7mon.o: arith.h
-ch7mon.o: botch_free.h
-ch7mon.o: def.h
-ch7mon.o: expr.h
-ch7mon.o: idf.h
-ch7mon.o: label.h
-ch7mon.o: nobitfield.h
-ch7mon.o: nofloat.h
-ch7mon.o: nopp.h
-ch7mon.o: spec_arith.h
-ch7mon.o: type.h
-label.o: Lpars.h
-label.o: arith.h
-label.o: def.h
-label.o: idf.h
-label.o: label.h
-label.o: level.h
-label.o: noRoption.h
-label.o: nobitfield.h
-label.o: nofloat.h
-label.o: nopp.h
-label.o: spec_arith.h
-label.o: type.h
-eval.o: Lpars.h
-eval.o: align.h
-eval.o: arith.h
-eval.o: assert.h
-eval.o: atw.h
-eval.o: code.h
-eval.o: dataflow.h
-eval.o: debug.h
-eval.o: def.h
-eval.o: expr.h
-eval.o: idf.h
-eval.o: label.h
-eval.o: level.h
-eval.o: mes.h
-eval.o: nobitfield.h
-eval.o: nocross.h
-eval.o: nofloat.h
-eval.o: nopp.h
-eval.o: sizes.h
-eval.o: spec_arith.h
-eval.o: stack.h
-eval.o: target_sizes.h
-eval.o: type.h
-switch.o: Lpars.h
-switch.o: arith.h
-switch.o: assert.h
-switch.o: botch_free.h
-switch.o: code.h
-switch.o: debug.h
-switch.o: density.h
-switch.o: expr.h
-switch.o: idf.h
-switch.o: label.h
-switch.o: noRoption.h
-switch.o: nobitfield.h
-switch.o: nofloat.h
-switch.o: nopp.h
-switch.o: spec_arith.h
-switch.o: switch.h
-switch.o: type.h
-conversion.o: Lpars.h
-conversion.o: arith.h
-conversion.o: nobitfield.h
-conversion.o: nocross.h
-conversion.o: nofloat.h
-conversion.o: sizes.h
-conversion.o: spec_arith.h
-conversion.o: target_sizes.h
-conversion.o: type.h
-blocks.o: align.h
-blocks.o: arith.h
-blocks.o: atw.h
-blocks.o: label.h
-blocks.o: nocross.h
-blocks.o: nofloat.h
-blocks.o: sizes.h
-blocks.o: spec_arith.h
-blocks.o: stack.h
-blocks.o: target_sizes.h
-dataflow.o: dataflow.h
-tokenfile.o: Lpars.h
-declar.o: LLlex.h
-declar.o: Lpars.h
-declar.o: arith.h
-declar.o: debug.h
-declar.o: declar.h
-declar.o: decspecs.h
-declar.o: def.h
-declar.o: expr.h
-declar.o: field.h
-declar.o: file_info.h
-declar.o: idf.h
-declar.o: label.h
-declar.o: level.h
-declar.o: nobitfield.h
-declar.o: nocross.h
-declar.o: nofloat.h
-declar.o: nopp.h
-declar.o: sizes.h
-declar.o: spec_arith.h
-declar.o: struct.h
-declar.o: target_sizes.h
-declar.o: type.h
-statement.o: LLlex.h
-statement.o: Lpars.h
-statement.o: arith.h
-statement.o: botch_free.h
-statement.o: code.h
-statement.o: debug.h
-statement.o: def.h
-statement.o: expr.h
-statement.o: file_info.h
-statement.o: idf.h
-statement.o: label.h
-statement.o: nobitfield.h
-statement.o: nofloat.h
-statement.o: nopp.h
-statement.o: spec_arith.h
-statement.o: stack.h
-statement.o: type.h
-expression.o: LLlex.h
-expression.o: Lpars.h
-expression.o: arith.h
-expression.o: expr.h
-expression.o: file_info.h
-expression.o: idf.h
-expression.o: label.h
-expression.o: noRoption.h
-expression.o: nobitfield.h
-expression.o: nofloat.h
-expression.o: nopp.h
-expression.o: spec_arith.h
-expression.o: type.h
-program.o: LLlex.h
-program.o: Lpars.h
-program.o: arith.h
-program.o: code.h
-program.o: declar.h
-program.o: decspecs.h
-program.o: def.h
-program.o: expr.h
-program.o: file_info.h
-program.o: idf.h
-program.o: label.h
-program.o: nobitfield.h
-program.o: nofloat.h
-program.o: nopp.h
-program.o: spec_arith.h
-program.o: type.h
-Lpars.o: Lpars.h
-ival.o: LLlex.h
-ival.o: Lpars.h
-ival.o: align.h
-ival.o: arith.h
-ival.o: assert.h
-ival.o: class.h
-ival.o: debug.h
-ival.o: def.h
-ival.o: estack.h
-ival.o: expr.h
-ival.o: field.h
-ival.o: file_info.h
-ival.o: idf.h
-ival.o: label.h
-ival.o: level.h
-ival.o: noRoption.h
-ival.o: nobitfield.h
-ival.o: nocross.h
-ival.o: nofloat.h
-ival.o: nopp.h
-ival.o: sizes.h
-ival.o: spec_arith.h
-ival.o: struct.h
-ival.o: target_sizes.h
-ival.o: type.h
-char.o: class.h
-symbol2str.o: Lpars.h

+ 0 - 4
lang/cem/cemcom/Parameters

@@ -24,10 +24,6 @@
 #define	IFDEPTH	256	/* maximum number of nested if-constructions	*/
 
 
-!File: maxincl.h
-#define	MAXINCL	12	/* maximum number of #include directories	*/
-
-
 !File: density.h
 #define	DENSITY	2	/* see switch.[ch] for an explanation		*/
 

+ 0 - 4
lang/cem/cemcom/SmallPars

@@ -24,10 +24,6 @@
 #define	IFDEPTH	256	/* maximum number of nested if-constructions	*/
 
 
-!File: maxincl.h
-#define	MAXINCL	12	/* maximum number of #include directories	*/
-
-
 !File: density.h
 #define	DENSITY	2	/* see switch.[ch] for an explanation		*/
 

+ 1 - 1
lang/cem/cemcom/domacro.c

@@ -26,7 +26,7 @@
 #include	"class.h"
 #include	"macro.h"
 
-IMPORT char *inctable[];	/* list of include directories		*/
+IMPORT char **inctable;	/* list of include directories		*/
 IMPORT char *getwdir();
 PRIVATE char ifstack[IFDEPTH];	/* if-stack: the content of an entry is	*/
 				/* 1 if a corresponding ELSE has been	*/

+ 10 - 7
lang/cem/cemcom/main.c

@@ -11,7 +11,6 @@
 #include	"target_sizes.h"
 #include	"debug.h"
 #include	"use_tmp.h"
-#include	"maxincl.h"
 #include	"inputtype.h"
 #include	"input.h"
 #include	"level.h"
@@ -35,11 +34,9 @@ char options[128];			/* one for every char	*/
 
 #ifndef NOPP
 int inc_pos = 1;			/* place where next -I goes */
-char *inctable[MAXINCL] = {		/* list for includes	*/
-	".",
-	"/usr/include",
-	0
-};
+int inc_total = 0;
+int inc_max;
+char **inctable;
 
 extern char *getwdir();
 #endif NOPP
@@ -89,8 +86,14 @@ main(argc, argv)
 	prog_name = argv[0];
 
 	init_hmask();
-
 #ifndef NOPP
+	inctable = (char **) Malloc(10 * sizeof(char *));
+	inctable[0] = ".";
+	inctable[1] = "/usr/include";
+	inctable[2] = 0;
+	inc_total = 2;
+	inc_max = 10;
+
 	init_pp();	/* initialise the preprocessor macros	*/
 #endif NOPP
 

+ 16 - 5
lang/cem/cemcom/options.c

@@ -10,7 +10,6 @@
 #include	"nofloat.h"
 #include	"nopp.h"
 #include	"idfsize.h"
-#include	"maxincl.h"
 #include	"nobitfield.h"
 #include	"class.h"
 #include	"macro.h"
@@ -23,8 +22,10 @@
 #include	"noRoption.h"
 
 #ifndef NOPP
-extern char *inctable[MAXINCL];
+extern char **inctable;
 extern int inc_pos;
+extern int inc_max;
+extern int inc_total;
 #endif NOPP
 
 extern char options[];
@@ -126,15 +127,25 @@ deleted, is now a debug-flag
 	case 'I' :	/* -Ipath : insert "path" into include list	*/
 #ifndef NOPP
 		if (*text)	{
-			int i = inc_pos++;
+			int i;
 			register char *new = text;
 			
+			if (++inc_total > inc_max) {
+				char **n = (char **)
+				   Malloc((10+inc_max)*sizeof(char *));
+				for (i = 0; i < inc_max; i++) {
+					n[i] = inctable[i];
+				}
+				free((char *) inctable);
+				inctable = n;
+				inc_max += 10;
+			}
+				
+			i = inc_pos++;
 			while (new)	{
 				char *tmp = inctable[i];
 				
 				inctable[i++] = new;
-				if (i == MAXINCL)
-					fatal("too many -I options");
 				new = tmp;
 			}
 		}