Ver código fonte

allow for multiple parsers within one program

ceriel 34 anos atrás
pai
commit
feb0e8498a
3 arquivos alterados com 12 adições e 22 exclusões
  1. 0 5
      util/LLgen/LLgen.1
  2. 3 3
      util/LLgen/lib/incl
  3. 9 14
      util/LLgen/lib/rec

+ 0 - 5
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

+ 3 - 3
util/LLgen/lib/incl

@@ -1,6 +1,8 @@
 /* $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
@@ -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;

+ 9 - 14
util/LLgen/lib/rec

@@ -7,10 +7,6 @@
 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;
@@ -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