[Top][All Lists]
[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
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Chicken-users] Read-syntax hook,
felix <=