Change-Id: I9f987dc25d77a829cc0716cbe4cb1b91c36de861 Reviewed-on: https://cl.tvl.fyi/c/depot/+/3269 Tested-by: BuildkiteCI Reviewed-by: grfn <grfn@gws.fyi>
		
			
				
	
	
		
			48 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| 
 | |
| 		     NPG a Naive Parser Generator
 | |
| 			   for Common Lisp
 | |
| 
 | |
| 	 Copyright (C) 2003-2006, 2010 by Walter C. Pelissero
 | |
| 	 Copyright (C) 2021 by the TVL Authors
 | |
| 
 | |
| Vendored into depot as it is a dependency of mime4cl and upstream has
 | |
| become inactive. Upstream and depot version may diverge.
 | |
| 
 | |
| Upstream Website: http://wcp.sdf-eu.org/software/#npg
 | |
| Vendored Tarball: http://wcp.sdf-eu.org/software/npg-20150517T144652.tbz
 | |
| 
 | |
| This library is  free software; you can redistribute  it and/or modify
 | |
| it  under  the terms  of  the GNU  Lesser  General  Public License  as
 | |
| published by the  Free Software Foundation; either version  2.1 of the
 | |
| License,  or (at  your option)  any  later version.   This library  is
 | |
| distributed  in the  hope  that it  will  be useful,  but WITHOUT  ANY
 | |
| WARRANTY;  without even  the  implied warranty  of MERCHANTABILITY  or
 | |
| FITNESS FOR A  PARTICULAR PURPOSE.  See the GNU  Lesser General Public
 | |
| License for more details.  You should  have received a copy of the GNU
 | |
| Lesser General Public  License along with this library;  if not, write
 | |
| to the  Free Software  Foundation, Inc., 59  Temple Place,  Suite 330,
 | |
| Boston, MA 02111-1307 USA
 | |
| 
 | |
| 
 | |
| This library generates on the fly (no external representation of the
 | |
| parser is produced) a recursive descent parser based on the grammar
 | |
| rules you have fed it with.  The parser object can then be used to
 | |
| scan tokenised input.  Although a facility to produce a lexical
 | |
| analiser is not provided, to write such a library is fairly easy for
 | |
| most languages.  NPG parsers require your lexer to adhere to a certain
 | |
| protocol to be able to communicate with them.  Examples are provided
 | |
| that explain these requirements.
 | |
| 
 | |
| While quite possibly not producing the fastest parsers in town, it's
 | |
| fairly simple and hopefully easy to debug.  It accepts a lispy EBNF
 | |
| grammar description of arbitrary complexity with the exception of
 | |
| mutually left recursive rules (watch out, they produce undetected
 | |
| infinite recursion) and produces a backtracking recursive descent
 | |
| parser.  Immediate left recursive rules are properly simplified,
 | |
| though.
 | |
| 
 | |
| Multiple concurrent parsers are supported.
 | |
| 
 | |
| To compile, an ASDF and nix file are provided.
 | |
| 
 | |
| See the examples directory for clues on how to use it.
 |