From strandh at labri.fr Wed Apr 6 05:56:59 2005 From: strandh at labri.fr (Robert Strandh) Date: Wed, 6 Apr 2005 07:56:59 +0200 Subject: [climacs-announce] latest progress Message-ID: <16979.31275.3405.782418@serveur5.labri.fr> Dear Mailing-list member, Nearly three weeks have gone by since the previous progress report. The main reason for that is that I have had some computer trouble (my main development computer was pirated, and I decided to reinstall a newer OS), and some other difficulties that I won't bore you with. The net result is that there has not been as much progress on Climacs from me as I had hoped. Nevertheless, Christophe Rhodes and Aleksandar Bakic have been making great progress in my absence. Perhaps the most exciting thing that happened is that Christophe Rhodes write a syntax module for Prolog. This work, together with the oddities of Prolog syntax, has exposed some limitations to the current parsing framework (based on a modified Earley parsing algorithm), but generally confirmed that writing a syntax module using this framework is not exceptionally hard. There is still some code factoring needed, especially with respect to parse-stack-driven redisplay. And I still don't know how to write a general-purpose protocol for exploiting the parse stack in interesting ways other than for redisplay. Here is a list of what happened since the previous report: * Improved the parsing framework by abstracting out certain features from html-syntax.lisp to syntax.lisp in order to make them more generally useful. Also did some code factoring. * Implementation of the undo protocol for the persistent buffer implementation. (thanks to Aleksandar Bakic) * Made several improvements to HTML-mode. Now, the add-rule macro is used so as to regroup all aspects of an HTML construct instead of having the grammar rule close to the code for creating the grammar. Introduced a macro `add-html-rule' inspired by the work of Christophe Rhodes on the Prolog syntax. Added grammar rules for recognizing string and the DIR and LANG attributes. Improved the code for recognizing the HREF attribute. * Fixed a file-order problem in climacs.asd (thanks to Aleksandar Bakic) * Syntax module for the Prolog programming language (see above). (thanks to Christophe Rhodes) * Fixed a redisplay bug reported by Christophe Rhodes. -- 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. --------------------------------------------------------------------- From strandh at labri.fr Thu Apr 28 05:49:36 2005 From: strandh at labri.fr (Robert Strandh) Date: Thu, 28 Apr 2005 07:49:36 +0200 Subject: [climacs-announce] latest progress Message-ID: <17008.31088.264466.546394@serveur5.labri.fr> Dear mailing-list member, There is no doubt that the most exciting thing that has happened since the previous progress report is that Climacs now has a syntax module for Common Lisp. A group of four students: Nada Ayad, Julien Cazaban, Pascal Fong Kye, and Bruno Mery, have been working for the past two months or so to get this working. The first commits were made last week (just in time for me to announce it at the Amsterdam Lisp meeting), and we have seen a steady stream of improvements since then. In theory, the project is due tomorrow, so there is definitely the possibility that this stream will stop after that. So feel free to play around with the features, submit patches, add new features, etc. I am discovering the features myself now, so I am sure I do not yet have the full picture. Yesterday, I tested some of the syntax highlighting features, and I am already impressed. For instance, trying to use a digit that is not valid for the radix in the CL #nrxxx construct makes the token change colors. There are still some problems, of course, that may or may not be fixed by tomorrow. I advice against major modifications on your part before that. Other improvements since the previous progress report: * Improvements to Prolog syntax. (thanks to Christophe Rhodes) * Improvements to HTML syntax (organize the grammar around concepts in the standard, more elements, performance improvements). * Performance improvements of the Earley Parser in the form of precomputed prediction rules and a faster test for whether a rule has been predicted. Also avoid generic-function dispatch on functions that are called frequently. (thanks in part to Christophe Rhodes) The next speed improvement to the parsing framework might be to allow for a "manual" test to determine whether a rule is valid for prediction. To illustrate this idea for CL syntax: currently, whenever an expression is expected, all rules that handle the dispatch macro character #\# will be predicted. However, most often, the next lexeme is not #\#, so these predictions will not be used further. They must, however, be traversed when the completer searches this state for valid incomplete items. All this is costly. A simple test that makes it possible to test the next lexeme when a rule is about to be predicted could cut down on this work considerably. A similar phenomenon will occur in HTML mode when each inline element will be predicted for each word in an ordinary paragraph of text. Keep up the good work. -- 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. ---------------------------------------------------------------------