Moved LLgen documentation from the main ACK documentation directory into LLgen's own documentation directory.
This commit is contained in:
		
							parent
							
								
									dd57d79b1b
								
							
						
					
					
						commit
						953a565a10
					
				
					 4 changed files with 3982 additions and 0 deletions
				
			
		
							
								
								
									
										139
									
								
								util/LLgen/doc/LLgen.1
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										139
									
								
								util/LLgen/doc/LLgen.1
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,139 @@ | ||||||
|  | .\" $Id$ | ||||||
|  | .TH LLGEN 1 "$Revision$" | ||||||
|  | .ad | ||||||
|  | .SH NAME | ||||||
|  | LLgen, an extended LL(1) parser generator | ||||||
|  | .SH SYNOPSIS | ||||||
|  | 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 | ||||||
|  | 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. 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 | ||||||
|  | version. | ||||||
|  | This allows | ||||||
|  | \fILLgen\fP | ||||||
|  | to be used with | ||||||
|  | \fImake\fP | ||||||
|  | (1) 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 | ||||||
|  | (1) 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\-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 | ||||||
|  | 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. When jump tables are to be used more often, | ||||||
|  | \fIhigh_percentage\fP must be set to this threshold, and \fIlow_percentage\fP | ||||||
|  | must be set 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 | ||||||
|  | Lncor.c                   non-correcting error recovery mechanism | ||||||
|  | .br | ||||||
|  | Lpars.h                   defines for token names | ||||||
|  | .SH "SEE ALSO" | ||||||
|  | \fIlex\fP(1) | ||||||
|  | .br | ||||||
|  | \fImake\fP(1) | ||||||
|  | .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 | ||||||
|  | \fILL.output\fP | ||||||
|  | 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. | ||||||
							
								
								
									
										1077
									
								
								util/LLgen/doc/LLgen.n
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1077
									
								
								util/LLgen/doc/LLgen.n
									
										
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							
							
								
								
									
										54
									
								
								util/LLgen/doc/LLgen.refs
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								util/LLgen/doc/LLgen.refs
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,54 @@ | ||||||
|  | %T An ALL(1) Compiler Generator | ||||||
|  | %A D. R. Milton | ||||||
|  | %A L. W. Kirchhoff | ||||||
|  | %A B. R. Rowland | ||||||
|  | %B Proc. of the SIGPLAN '79 Symposium on Compiler Construction | ||||||
|  | %D August 1979  | ||||||
|  | %J SIGPLAN Notices | ||||||
|  | %N 8 | ||||||
|  | %P 152-157 | ||||||
|  | %V 14 | ||||||
|  | 
 | ||||||
|  | %T Lex - A Lexical Analyser Generator | ||||||
|  | %A M. E. Lesk | ||||||
|  | %I Bell Laboratories | ||||||
|  | %D October 1975 | ||||||
|  | %C Murray Hill, New Jersey | ||||||
|  | %R Comp. Sci. Tech. Rep. No. 39 | ||||||
|  | 
 | ||||||
|  | %T Yacc: Yet Another Compiler Compiler | ||||||
|  | %A S. C. Johnson | ||||||
|  | %I Bell Laboratories | ||||||
|  | %D 1975 | ||||||
|  | %C Murray Hill, New Jersey | ||||||
|  | %R Comp. Sci. Tech. Rep. No. 32 | ||||||
|  | 
 | ||||||
|  | %T The C Programming Language | ||||||
|  | %A B. W. Kernighan | ||||||
|  | %A D. M. Ritchie | ||||||
|  | %I Prentice-Hall, Inc. | ||||||
|  | %C Englewood Cliffs, New Jersey | ||||||
|  | %D 1978 | ||||||
|  | 
 | ||||||
|  | %A M. Griffiths | ||||||
|  | %T LL(1) Grammars and Analysers | ||||||
|  | %E F. L. Bauer and J. Eickel | ||||||
|  | %B Compiler Construction, An Advanced Course | ||||||
|  | %I Springer-Verlag | ||||||
|  | %C New York, N.Y. | ||||||
|  | %D 1974 | ||||||
|  | 
 | ||||||
|  | %T Make - A Program for Maintaining Computer Programs | ||||||
|  | %A S. I. Feldman | ||||||
|  | %J Software - Practice and Experience | ||||||
|  | %V 10 | ||||||
|  | %N 8 | ||||||
|  | %P 255-265 | ||||||
|  | %D August 1979 | ||||||
|  | 
 | ||||||
|  | %T Methods for the Automatic Construction of Error Correcting Parsers | ||||||
|  | %A J. R\*:ohrich | ||||||
|  | %J Acta Informatica | ||||||
|  | %V 13 | ||||||
|  | %P 115-139 | ||||||
|  | %D 1980 | ||||||
							
								
								
									
										2712
									
								
								util/LLgen/doc/LLgen_NCER.n
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										2712
									
								
								util/LLgen/doc/LLgen_NCER.n
									
										
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							
		Loading…
	
	Add table
		
		Reference in a new issue