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
/* $Header$ */
#ifdef LL_DEBUG
-#define LL_assert(x) if(!(x)) LL_badassertion("x",__FILE__,__LINE__)
+#include <assert.h>
+#include <stdio.h>
+#define LL_assert(x) assert(x)
#else
#define LL_assert(x) /* nothing */
#endif
#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;
static char *rcsid = "$Header$";
# endif
-# ifdef LL_DEBUG
-# include <stdio.h>
-# endif
-
unsigned int LLtcnt[LL_NTERMINALS];
unsigned int LLscnt[LL_NSETS];
int LLcsymb, LLsymb;
extern LLread();
extern int LLskip();
extern int LLnext();
-#ifndef LLscan
+#ifndef LL_FASTER
extern LLscan();
#endif
extern LLerror();
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
return LLdoskip(0);
}
+static int
LLuserhook(exp, list)
int *list;
{
return LLsymb != old;
}
+static
LLmklist(list)
register int *list;
{
*list = 0;
}
+static
LLdoskip(exp) {
int LLx;
int list[LL_NTERMINALS+1];
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