tvl-depot/third_party/lisp/npg
sterni 8e45aace13 chore(3p/lisp): import npg source tarball
Used http://wcp.sdf-eu.org/software/npg-20150517T144652.tbz (sha256
42e88f6067128fbdb3a3d578371c9b0ee2a34f1d36daf80be8a520094132d828).
There's no upstream repository nor a release since 2015, so importing
seems to make a lot of sense.

Since we can't subtree making any depot-related changes in a separate CL
-- this is only the source import.

Change-Id: I64c984ca0a84b9e48c6f496577ffccce1d7bdceb
Reviewed-on: https://cl.tvl.fyi/c/depot/+/3377
Tested-by: BuildkiteCI
Reviewed-by: grfn <grfn@gws.fyi>
2021-09-01 22:57:17 +00:00
..
examples chore(3p/lisp): import npg source tarball 2021-09-01 22:57:17 +00:00
src chore(3p/lisp): import npg source tarball 2021-09-01 22:57:17 +00:00
.project chore(3p/lisp): import npg source tarball 2021-09-01 22:57:17 +00:00
COPYING chore(3p/lisp): import npg source tarball 2021-09-01 22:57:17 +00:00
npg.asd chore(3p/lisp): import npg source tarball 2021-09-01 22:57:17 +00:00
README chore(3p/lisp): import npg source tarball 2021-09-01 22:57:17 +00:00

		     NPG a Naive Parser Generator
			   for Common Lisp

	 Copyright (C) 2003-2006, 2010 by Walter C. Pelissero

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 file is provided.

See the examples directory for clues on how to use it.