Eclector Manual
HTML Version
PDF Version
GNU Info Version
European Lisp Symposium 2026 Paper and Presentation
Abstract
The Common Lisp read function (usually called the
Common Lisp reader) is an essential part of every
Common Lisp implementation, because it is used to read Common
Lisp code for subsequent evaluation. The readers of most
existing Common Lisp implementations do this well, but little
more. However, there are many situations where it is useful
to read Common Lisp code for other purposes as well, and in
those situations it can be essential to be able to configure
the reader in various ways, for instance so that it does not
fail for symbols with incorrect package markers. In this
paper, we describe Eclector, a highly configurable Common Lisp
reader. Configuration is accomplished by the extensive use of
Common Lisp generic functions called by Eclector and that can
be specialized by client code.
Paper (PDF)
Presentation Slides (HTML)
Recorded Video (Youtube)
Online Lisp Meeting 2020 Presentation
Abstract
The Common Lisp reader is a collection of functions and
variables for turning sequences of characters into
s-expressions, which are described in Chapter 2 of the
specification. While some aspects of the behavior of the
reader can be customized, many parts are internal to each
Common Lisp implementation and thus inaccessible to portable
programs. Eclector is a portable reader implementation which
is set apart by 1) providing very detailed error reporting
(for humans and programs) 2) allowing recovery from (almost)
all syntax errors 3) allowing customization of far more
aspects than other readers 4) providing a mechanism for
constructing parse results with source information. This
presentation introduces the Eclector project and explains the
customization mechanisms built into its architecture.
Everything is considered from the perspective of a user of the
Eclector reader, so its implementation is not discussed. The
features mentioned above are further illustrated in several
(hopefully) interesting and useful demonstrations.
Presentation Slides (HTML)
Recorded Video (Youtube)