Skip to content
An experimental implementation of parser combinators in Common Lisp
Common Lisp
Find file
Latest commit 9c7569a @Ramarren Bind seen-positions hashtable to a context
This is so that it doesn't invalidate when used with parse-sequence,
which will continue parsing to obtain additional results after leaving
parse-sequence dynamic scope as required.

Also make type declaration in note-position use long-form to placate
ECL compiler (fixes #11).
Failed to load latest commit information.
doc Update comment in csv example.
README.markdown Fix word in README
basic.lisp Bind seen-positions hashtable to a context
cache.lisp Add function for clearing parser cache.
combinators.lisp Use proper apostrophe marks in comment
contexts.lisp Bind seen-positions hashtable to a context
debug.lisp Define C?, an ergonomic shortcut for CHECK?
ensure-parser.lisp Add parameter to gathering functions to allow zero width matches, als…
greedy.lisp Add BEFORE*: find a p before q, doesn't consume q.
lazy.lisp Plurarize combinators in system/package name
memoize.lisp In memoize?, move global variable management inside the closure.
package.lisp Add CHOOKAHEAD?: return result if p matches, but do no advance
parser-combinators-cl-ppcre.asd Add parser using regular expressions using cl-ppcre.
parser-combinators-debug.asd Provide a separate debug system, dependent on CL-CONTAINERS
parser-combinators-tests.asd Drop fare-matcher dependency
parser-combinators.asd Move some parsers to a new file, add a new parser inspired by recent …
parsers.lisp Add CHOOKAHEAD?: return result if p matches, but do no advance
primitives.lisp Fix (zero) to emit proper closure.
queue.lisp Add breadth first possibility search for find-after.
recurse.lisp Fix curtail?
regex-parser.lisp Use make-context-at-position in regex using parser, anchor regexes.
test-arithmetic.lisp Drop fare-matcher dependency
test-basic.lisp Commit update of test suite from `stefil` to `hu.dwim.stefil`
test-expression.lisp Drop fare-matcher dependency
test-parsers.lisp Add tests for except?.
test-root.lisp Drop fare-matcher dependency
token-parsers.lisp Fix indentation.



This is an experimental implementation of parser combinators for Common Lisp. This is mostly inspired by Parsec, but with limited optimizations. Parser combinators are, in theory, an elegant form of constructing parsers for context-free grammars.

The name of the system is parser-combinators, despite the name of the GitHub repository. The library is fairly lightly tested. Any comments or questions on the functionality or performance are welcome.


  • iterate
  • alexandria

The test suite has some additional dependencies, all of which are in quicklisp


There is some documentation in the doc directory.

Something went wrong with that request. Please try again.