129 lines
		
	
	
	
		
			3.3 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
			
		
		
	
	
			129 lines
		
	
	
	
		
			3.3 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
.\" $Header$
 | 
						|
.TH LLGEN 1ACK
 | 
						|
.ad
 | 
						|
.SH NAME
 | 
						|
LLgen, an extended LL(1) parser generator
 | 
						|
.SH SYNOPSIS
 | 
						|
\fBLLgen\fP
 | 
						|
[
 | 
						|
\fB\-vxw\fP
 | 
						|
]
 | 
						|
[
 | 
						|
\fB\-j\fP[\fInum\fP]
 | 
						|
]
 | 
						|
[
 | 
						|
\fB\-l\fP\fInum\fP
 | 
						|
]
 | 
						|
[
 | 
						|
\fB\-h\fP\fInum\fP
 | 
						|
]
 | 
						|
file ...
 | 
						|
.SH DESCRIPTION
 | 
						|
\fILLgen\fP
 | 
						|
converts a context-free grammar into a set of
 | 
						|
functions which form a recursive descent parser with no backtrack.
 | 
						|
The grammar may be ambiguous;
 | 
						|
ambiguities can be broken by user specifications.
 | 
						|
.PP
 | 
						|
\fILLgen\fP
 | 
						|
reads each
 | 
						|
\fIfile\fP
 | 
						|
in sequence.
 | 
						|
Together, these files must constitute a context-free grammar.
 | 
						|
For each file,
 | 
						|
\fILLgen\fP
 | 
						|
generates an output file, which must be compiled by the
 | 
						|
C-compiler.
 | 
						|
In addition, it generates the files
 | 
						|
\fILpars.c\fP
 | 
						|
and
 | 
						|
\fILpars.h.\fP
 | 
						|
\fILpars.h\fP
 | 
						|
contains the
 | 
						|
\fIdefine\fP
 | 
						|
statements that associate the
 | 
						|
\fILLgen\fP-assigned `token-codes' with user declared `token-names'.
 | 
						|
This allows other source files, for instance the source file
 | 
						|
containing the lexical analyzer,
 | 
						|
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.
 | 
						|
.PP
 | 
						|
\fILLgen\fP
 | 
						|
will only update those output files that differ from their previous
 | 
						|
version.
 | 
						|
This allows
 | 
						|
\fILLgen\fP
 | 
						|
to be used with
 | 
						|
\fImake\fP
 | 
						|
(I) convieniently.
 | 
						|
.PP
 | 
						|
To obtain a working program, the user must also supply a
 | 
						|
lexical analyzer, as well as
 | 
						|
\fImain\fP
 | 
						|
and
 | 
						|
\fILLmessage\fP,
 | 
						|
an error reporting routine;
 | 
						|
\fILex\fP
 | 
						|
(I) is a useful program for creating lexical analysers usable
 | 
						|
by
 | 
						|
\fILLgen\fP.
 | 
						|
.PP
 | 
						|
\fILLgen\fP accepts the following flags:
 | 
						|
.IP \fB\-v\fP
 | 
						|
create a file called
 | 
						|
\fILL.output\fP,
 | 
						|
which contains a description of the conflicts that
 | 
						|
were not resolved.
 | 
						|
If the flag is given more than once,
 | 
						|
\fILLgen\fP
 | 
						|
will be more "verbose".
 | 
						|
If it is given three times, a complete description of the
 | 
						|
grammar will be supplied.
 | 
						|
.IP \fB\-x\fP
 | 
						|
the sets that are computed are extended with the nonterminal
 | 
						|
symbols and these extended sets are also included in the
 | 
						|
\fILL.output\fP
 | 
						|
file.
 | 
						|
.IP \fB\-w\fP
 | 
						|
no warnings are given.
 | 
						|
.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
 | 
						|
done for switches that have density between
 | 
						|
\fIlow_percentage\fP and \fIhigh_percentage\fP, as explained below.
 | 
						|
Usually, compilers generate a jumptable when the density of the switch
 | 
						|
is above a certain threshold. If you want jump tables in more cases,
 | 
						|
set \fIhigh_percentage\fP to this threshold, and \fIlow_percentage\fP to
 | 
						|
a minimum threshold. There is a time-space trade-off here.
 | 
						|
.I num
 | 
						|
is the minimum number of cases in a switch for the \fB\-j\fP option to be
 | 
						|
effective. The default value (if
 | 
						|
.I num
 | 
						|
is not given) is 8.
 | 
						|
.IP \fB\-l\fP\fInum\fP
 | 
						|
The \fIlow_percentage\fP, as described above. Default value is 10.
 | 
						|
.IP \fB\-h\fP\fInum\fP
 | 
						|
The \fIhigh_percentage\fP, as described above. Default value is 30.
 | 
						|
.SH FILES
 | 
						|
LL.output                 verbose output file
 | 
						|
.br
 | 
						|
Lpars.c                   the error recovery routines
 | 
						|
.br
 | 
						|
Lpars.h                   defines for token names
 | 
						|
.SH "SEE ALSO"
 | 
						|
\fIlex\fP (I)
 | 
						|
.br
 | 
						|
\fImake\fP (I)
 | 
						|
.br
 | 
						|
\fILLgen, an Extended LL(1) Parser Generator\fP
 | 
						|
by C.J.H. Jacobs.
 | 
						|
.SH DIAGNOSTICS
 | 
						|
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 AUTHOR
 | 
						|
Ceriel J. H. Jacobs
 |