graylex
graylex offers a means to do string operations on input streams without slurping all input at once by using Common Lisp Gray Streams, fixed-sized and flexible buffers.

This is especially interesting for lexical analysis ("lexing") where input files can be exuberant, e.g. SQL dumps weighing hundreds of Megabytes.

The package contains a usage example, GRAYLEX-M4-EXAMPLE and the project cl-m4 demonstrates real-world usage.

Categories: lexer, Gray streams

Author: Alexander Kahl

Source repository: https://github.com/outergod/graylex.

License: GPL3

Quick assessment (2023-03-31)

  • The :graylex system builds without any warnings, and the :graylex-m4-example works as expected.
  • The :graylex-test system fails to iterate over files in test/fixtures/ because one of them is a directory.
  • Running (graylex-test:all) causes a stack overflow in both CCL and MKCL. Is this a problem with Stefil?

? (graylex-test:all)
> Debug: Stack overflow on value stack.
> While executing: HU.DWIM.STEFIL::RECORD/UNEXPECTED-ERROR, in process listener(1).
...........................................E
> Type :GO to continue, :POP to abort, :R for a list of available restarts.
> If continued: Skip the rest of the test SIMPLE-SEQUENCE-READING and continue by returning (values)
> Type :? for other options.