8e45aace13
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> |
||
---|---|---|
.. | ||
examples | ||
src | ||
.project | ||
COPYING | ||
npg.asd | ||
README |
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.