On Mon, 10 Oct, 2005 at 16:16:45 +0200, Edi Weitz wrote:
(define-parse-tree-synonym a-z (:char-class (:range #\a #\z) (:range #\a #\z)))
(define-parse-tree-synonym a-z* (:greedy-repetition 0 nil a-z))
(defun ascii-char-tester (string) (scan '(:sequence :start-anchor a-z* :end-anchor) string))
I just checked and I see the same error message. However, your example works fine with LispWorks, AllegroCL, SBCL, and CLISP. I suspect this might be a bug in CMUCL - note the EVAL-WHEN that's part of the definition of DEFINE-PARSE-TREE-SYNONYM. It looks to me as if the code isn't executed at load time although it should.
I have searched Google... It is certainly a bug in CMUCL :-(
As a workaround it can be written as: (defparameter a-z '(:char-class (:range #\a #\z) (:range #\a #\z))) (defparameter a-z* `(:greedy-repetition 0 nil ,a-z))
(defun ascii-char-tester (string) (scan `(:sequence :start-anchor ,a-z* :end-anchor) string))