From 13fea7102bff24d25ad0bfc2efbe1bc7346ad67c Mon Sep 17 00:00:00 2001 From: ceriel Date: Fri, 21 Feb 1997 12:23:04 +0000 Subject: [PATCH] Updated --- util/LLgen/LLgen.1 | 23 +++++++++++++++++++++-- util/LLgen/Makefile | 6 ++++++ util/LLgen/proto.make | 6 ++++++ util/LLgen/src/proto.make | 7 +++++++ 4 files changed, 40 insertions(+), 2 deletions(-) diff --git a/util/LLgen/LLgen.1 b/util/LLgen/LLgen.1 index 4cd288a14..32899674a 100644 --- a/util/LLgen/LLgen.1 +++ b/util/LLgen/LLgen.1 @@ -4,7 +4,7 @@ .SH NAME LLgen, an extended LL(1) parser generator .SH SYNOPSIS -LLgen [ \-vxwa ] [ \-j[\fInum\fP] ] [ \-l\fInum\fP ] [ \-h\fInum\fP ] file ... +LLgen [ \-vxwans ] [ \-j[\fInum\fP] ] [ \-l\fInum\fP ] [ \-h\fInum\fP ] file ... .SH DESCRIPTION \fILLgen\fP converts a context-free grammar into a set of @@ -36,7 +36,14 @@ to access the token-codes by using the token-names. \fILpars.c\fP contains the error recovery routines and tables. It must also -be compiled by the C-compiler. +be compiled by the C-compiler. When the generated parser uses non-correcting +error recovery ( +\fB\-n\fP +option) +\fILLgen\fP +also generates a file +\fILncor.c\fP +that contains the non-correcting recovery mechanism. .PP \fILLgen\fP will only update those output files that differ from their previous @@ -78,6 +85,12 @@ file. no warnings are given. .IP \fB\-a\fP Produce ANSI C function headers and prototypes. +.IP \fB\-n\fP +Produce a parser with non-correcting error recovery. +.IP \fB\-s\fP +Simulate the calling of all defined subparsers in all semantic actions. When +using non-correcting error recovery, subparsers that are called in semantic +actions may cause problems; this flag provides a `brute-force' solution. .IP \fB\-j\fP[\fInum\fP] when this flag is given, \fILLgen\fP will generate dense switches, so that the compiler can generate a jump table for it. This will only be @@ -109,6 +122,9 @@ Lpars.h defines for token names .br \fILLgen, an Extended LL(1) Parser Generator\fP by C.J.H. Jacobs. +.br +\fITop-down Non-Correcting Error Recovery in LLgen\fP +by A.W van Deudekom and P.J. Kooiman .SH DIAGNOSTICS Are intended to be self-explanatory. They are reported on standard error. A more detailed report is found in the @@ -116,3 +132,6 @@ on standard error. A more detailed report is found in the file. .SH AUTHOR Ceriel J. H. Jacobs +.br +The non-correcting error recovery mechanism is written by +A.W van Deudekom and P.J. Kooiman. diff --git a/util/LLgen/Makefile b/util/LLgen/Makefile index cafecdf46..858da6425 100644 --- a/util/LLgen/Makefile +++ b/util/LLgen/Makefile @@ -15,6 +15,8 @@ install: cp src/LLgen $(INSTALLDIR)/LLgen cp lib/rec $(LIBDIR)/rec cp lib/incl $(LIBDIR)/incl + cp lib/nc_rec $(LIBDIR)/nc_rec + cp lib/nc_incl $(LIBDIR)/nc_incl cp LLgen.1 $(MANDIR)/LLgen.1 firstinstall: @@ -24,6 +26,8 @@ firstinstall: -mkdir $(LIBDIR) cp lib/rec $(LIBDIR)/rec cp lib/incl $(LIBDIR)/incl + cp lib/nc_rec $(LIBDIR)/nc_rec + cp lib/nc_incl $(LIBDIR)/nc_incl cp LLgen.1 $(MANDIR)/LLgen.1 cmp: @@ -31,6 +35,8 @@ cmp: -cmp src/LLgen $(INSTALLDIR)/LLgen -cmp lib/rec $(LIBDIR)/rec -cmp lib/incl $(LIBDIR)/incl + -cmp lib/nc_rec $(LIBDIR)/nc_rec + -cmp lib/nc_incl $(LIBDIR)/nc_incl -cmp LLgen.1 $(MANDIR)/LLgen.1 distr: diff --git a/util/LLgen/proto.make b/util/LLgen/proto.make index 2e747398e..d7fa271d8 100644 --- a/util/LLgen/proto.make +++ b/util/LLgen/proto.make @@ -17,6 +17,8 @@ install: if [ $(DO_MACHINE_INDEP) = y ] ; \ then cp $(SRC_HOME)/util/LLgen/lib/rec $(LIBDIR)/rec ; \ cp $(SRC_HOME)/util/LLgen/lib/incl $(LIBDIR)/incl ; \ + cp $(SRC_HOME)/util/LLgen/lib/nc_incl $(LIBDIR)/nc_incl ; \ + cp $(SRC_HOME)/util/LLgen/lib/nc_rec $(LIBDIR)/nc_rec ; \ mk_manpage $(SRC_HOME)/util/LLgen/LLgen.1 $(TARGET_HOME) ; \ fi @@ -27,6 +29,8 @@ firstinstall: then if [ -d $(LIBDIR) ] ; then : ; else mkdir $(LIBDIR) ; fi ; \ cp $(SRC_HOME)/util/LLgen/lib/rec $(LIBDIR)/rec ; \ cp $(SRC_HOME)/util/LLgen/lib/incl $(LIBDIR)/incl ; \ + cp $(SRC_HOME)/util/LLgen/lib/nc_incl $(LIBDIR)/nc_incl ; \ + cp $(SRC_HOME)/util/LLgen/lib/nc_rec $(LIBDIR)/nc_rec ; \ mk_manpage $(SRC_HOME)/util/LLgen/LLgen.1 $(TARGET_HOME) ; \ fi @@ -35,6 +39,8 @@ cmp: -cmp src/LLgen $(INSTALLDIR)/LLgen -cmp $(SRC_HOME)/util/LLgen/lib/rec $(LIBDIR)/rec -cmp $(SRC_HOME)/util/LLgen/lib/incl $(LIBDIR)/incl + -cmp $(SRC_HOME)/util/LLgen/lib/nc_rec $(LIBDIR)/nc_rec + -cmp $(SRC_HOME)/util/LLgen/lib/nc_incl $(LIBDIR)/nc_incl distr: cd src; make distr diff --git a/util/LLgen/src/proto.make b/util/LLgen/src/proto.make index 841a3ade2..12def49b7 100644 --- a/util/LLgen/src/proto.make +++ b/util/LLgen/src/proto.make @@ -148,3 +148,10 @@ tokens.$(SUF): $(SRC_DIR)/cclass.h tokens.$(SUF): $(SRC_DIR)/extern.h tokens.$(SUF): $(SRC_DIR)/io.h tokens.$(SUF): $(SRC_DIR)/types.h + +savegram.$(SUF): $(SRC_DIR)/savegram.c + $(CC) -c $(CFLAGS) $(SRC_DIR)/savegram.c +savegram.$(SUF): $(SRC_DIR)/types.h +savegram.$(SUF): $(SRC_DIR)/extern.h +savegram.$(SUF): $(SRC_DIR)/io.h +savegram.$(SUF): $(SRC_DIR)/sets.h -- 2.34.1