From 8c6dc46124cc825c0f49d76b24297e2f75fcfcfa Mon Sep 17 00:00:00 2001 From: ceriel Date: Mon, 29 Jan 1990 13:51:32 +0000 Subject: [PATCH] allow for multiple parsers within one program --- util/LLgen/LLgen.1 | 5 ----- util/LLgen/lib/incl | 6 +++--- util/LLgen/lib/rec | 23 +++++++++-------------- 3 files changed, 12 insertions(+), 22 deletions(-) diff --git a/util/LLgen/LLgen.1 b/util/LLgen/LLgen.1 index 83ff34f53..08b8ed212 100644 --- a/util/LLgen/LLgen.1 +++ b/util/LLgen/LLgen.1 @@ -125,10 +125,5 @@ Are intended to be self-explanatory. They are reported on standard error. A more detailed report is found in the \fILL.output\fP file. -.SH BUGS -Because some file names are fixed, at most one -\fILLgen\fP -process can be active in a given directory at -a time. .SH AUTHOR Ceriel J. H. Jacobs diff --git a/util/LLgen/lib/incl b/util/LLgen/lib/incl index 77dbe7522..793bc1dae 100644 --- a/util/LLgen/lib/incl +++ b/util/LLgen/lib/incl @@ -1,6 +1,8 @@ /* $Header$ */ #ifdef LL_DEBUG -#define LL_assert(x) if(!(x)) LL_badassertion("x",__FILE__,__LINE__) +#include +#include +#define LL_assert(x) assert(x) #else #define LL_assert(x) /* nothing */ #endif @@ -15,8 +17,6 @@ extern int LLsymb; #define LLscan(x) if ((LLsymb = LL_LEXI()) != x) LLerror(x); else #endif -# include "Lpars.h" - extern unsigned int LLscnt[]; extern unsigned int LLtcnt[]; extern int LLcsymb; diff --git a/util/LLgen/lib/rec b/util/LLgen/lib/rec index 7ad1b1f75..5d54ab68b 100644 --- a/util/LLgen/lib/rec +++ b/util/LLgen/lib/rec @@ -7,10 +7,6 @@ static char *rcsid = "$Header$"; # endif -# ifdef LL_DEBUG -# include -# endif - unsigned int LLtcnt[LL_NTERMINALS]; unsigned int LLscnt[LL_NSETS]; int LLcsymb, LLsymb; @@ -20,7 +16,7 @@ static int LLlevel; extern LLread(); extern int LLskip(); extern int LLnext(); -#ifndef LLscan +#ifndef LL_FASTER extern LLscan(); #endif extern LLerror(); @@ -30,7 +26,11 @@ extern int LLfirst(); extern LLnewlevel(); extern LLoldlevel(); -#ifndef LLscan +#ifdef LL_USERHOOK +static LLdoskip(); +#endif + +#ifndef LL_FASTER LLscan(t) { /* * Check if the next symbol is equal to the parameter @@ -123,6 +123,7 @@ LLskip() { return LLdoskip(0); } +static int LLuserhook(exp, list) int *list; { @@ -132,6 +133,7 @@ LLuserhook(exp, list) return LLsymb != old; } +static LLmklist(list) register int *list; { @@ -157,6 +159,7 @@ LLmklist(list) *list = 0; } +static LLdoskip(exp) { int LLx; int list[LL_NTERMINALS+1]; @@ -240,11 +243,3 @@ LLoldlevel(LLsinfo) unsigned int *LLsinfo; { LLcsymb = (int) LLsinfo[LL_NSETS+LL_NTERMINALS+1]; } } - -# ifdef LL_DEBUG -LL_badassertion(asstr,file,line) char *asstr, *file; { - - fprintf(stderr,"Assertion \"%s\" failed %s(%d)\n",asstr,file,line); - abort(); -} -# endif -- 2.34.1