[climacs-announce] Climacs progress

Robert Strandh strandh at labri.fr
Wed Mar 2 05:51:40 UTC 2005

Dear mailing list member,

The past week, Aleksandar Bakic has been working on making it possible
for several buffer implementations to co-exist, so that an adequate
buffer implementation can be selected at runtime based on the contents
that it is supposed to hold.  Aleksandar has been implementing the
buffer protocol as a persistent data structure, which essentially
means that all previous versions are kept around, making things like
undo very easy. 

I have been working on the syntax framework.  The HTML syntax module
now uses the Earley parser, and it is plenty fast.  This probably
means that the CL syntax module can use an Earley parser as well.  The
main problem right now is figuring out what the protocol for
interacting with an Earley parser is supposed to look like.  Expect
some interesting progress in the near future. 

Here is an itemized list of what happened since the last progress

  * Climacs now has better error handling.  More conditions have been
    added that are now handled by the command loop or by individual
    commands, and the command loop no longer handles all error
    conditions, making it a bit easier to debug new code. 

  * Optimized the code of clone-mark to use constant class names.
    Also adapted the code to the new buffer organization.

  * Updated persistent buffer and buffer tests to reflect changes in
    the buffer organization. 
    (thanks to Aleksandar Bakic)

  * Improved on performance of incremental lexer for CL syntax by
    having a single mark and a length in each stack entry.  Also, made
    line comments into single stack entries to cut down on number of
    stack entries.  Eliminated whitespace as a stack entry. 

  * Introduced a delegating buffer which is now what all Climacs
    buffers should be.  The delegating buffer contains a real buffer
    which can have different possible implementations.  Fixed up a lot
    of code that made assumptions that are no longer valid for a
    delegating buffer.
    (thanks to Aleksandar Bakic)

  * Updated documentation to reflect changes in buffer organization. 

  * Documented buffer-line-number and buffer-column-number
    (thanks to Aleksandar Bakic)

  * Improved on HTML syntax.  It is not yet usable, but serves as a
    good example of how to write grammars for syntax module. 

  * Added a section in the documentation on incremental parsing.  This
    section is still incomplete, as I am discovering how to interface
    with the Early parser. 
Robert Strandh

Greenspun's Tenth Rule of Programming: any sufficiently complicated C
or Fortran program contains an ad hoc informally-specified bug-ridden
slow implementation of half of Common Lisp.

More information about the Climacs-announce mailing list