Guile-Reader: An Extensible Reader Framework for GNU Guile

Guile-reader is a simple framework for building readers for GNU Guile.

The idea is to provide an extensible, yet fast, reader for Guile, thereby allowing for the rapid implementation of a variety of syntax variants. Guile already provides facilities for extending its reader (namely read-hash-extend and read-enable) but these seem (i) quite limited and (ii) have a global impact (there is only one instance of read).

Guile-reader aims to provide a way to easily define new readers, while still allowing to re-use parts of a standard Scheme reader. New reader components (called "token readers") may be defined either as Scheme procedures or C functions. It uses GNU lightning (where available) to compile readers to native code, hence allowing to have performance comparable to that of Guile's built-in reader, but with improved maintainability.

Guile-reader's approach is similar to Common Lisp's "read table" but hopefully more powerful and flexible (for instance, one may instantiate as many readers as needed).

Availability

Guile-Reader is free software, distributed under the terms of the GNU General Public License. The latest version of Guile-Reader is 0.3. Releases are available from here.

It requires GNU Guile 1.8.x. To compile it, GNU Gperf is needed; GNU lightning 1.2b or later is also recommended on supported architectures.


Documentation

The user manual is available here (PDF).


Mailing List

Development questions, issues and bug reports should all go to the mailing-list.


Development

General information is available on the Savannah project page.

Development is managed using the GNU Arch distributed revision control system. You can fetch the latest version of the main branch using the following incantations:
$ tla register-archive http://arch.sv.gnu.org/archives/guile-reader/
$ tla get guile-reader@sv.gnu.org/guile-reader--devo--0.3 guile-reader
You can then happily hack on your side and eventually promote your changes on the mailing-list.



This HTML page was produced by Skribilo.
Last update: Sat Feb 24 15:25:50+0100 2007