Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
An experimental implementation of parser combinators in Common Lisp
Common Lisp
branch: master

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).
latest commit 9c7569a4f6
@Ramarren authored
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
combinators.lisp Use proper apostrophe marks in comment
debug.lisp Define C?, an ergonomic shortcut for CHECK?
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-tests.asd Drop fare-matcher dependency
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.