chicken-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Chicken-users] Read-syntax hook


From: felix
Subject: [Chicken-users] Read-syntax hook
Date: Wed, 21 May 2003 22:47:17 +0200
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.0.0) Gecko/20020529

The current CVS version provides now a (very crude) hook for syntactic
extensions. The variable `##sys#special-read-syntax-table' contains
either #f or a vector of read-syntax handlers (which may be #f).
The handler is called with a character (unread) and a port:

% cat x.scm

(define (qlist-reader c p)
  (read-char p)
  (let loop ([lst '()])
    (let skip ()
      (let ([c (peek-char p)])
        (cond [(eof-object? c) (error "unexpected end of [...] list")]
              [(char=? c #\])
               (read-char p)
               `(list ,@(reverse lst)) ]
              [(char-whitespace? c)
               (read-char p)
               (skip)]
              [else (loop (cons (read p) lst))] ) ) ) ) )

(set! ##sys#special-read-syntax-table (make-vector 256 #f))
(vector-set! ##sys#special-read-syntax-table (char->integer #\[) qlist-reader)

% csc x.scm -s
% csi x.so
; This is the CHICKEN interpreter.
; Version 1, Build 9 - linux-unix-gnu-x86
; (c)2000-2003 Felix L. Winkelmann
; loading /home/felix/.csirc ...
; loading x.so ...
>>> [1 2 3]
(1 2 3)
>>> ,q

% cat y.scm

(print [1 2 3])
% csc y.scm -X x.so
% y
(1 2 3)


cheers,
felix





reply via email to

[Prev in Thread] Current Thread [Next in Thread]