1;;;; reader-tests.scm
2
3(import (only chicken.io read-line read-string)
4        (only chicken.port with-input-from-string with-output-to-string)
5        (only chicken.read-syntax set-read-syntax! set-sharp-read-syntax!))
6
7(set-sharp-read-syntax! #\& (lambda (p) (read p) (values)))
8(set-sharp-read-syntax! #\^ (lambda (p) (read p)))
9(set-read-syntax! #\! (lambda (p) (read-line p) (values)))
10
11(define output
12  (with-output-to-string
13    (lambda ()
14      (print "hi") ! this is fortran
15      (print "foo") #&(print "amp-comment") (print "baz")
16      #^(print "bye"))))
17
18!! output:
19!! hi
20!! foo
21!! baz
22!! bye
23
24(assert (string=? output "hi\nfoo\nbaz\nbye\n"))
25(assert (string=? "   ." (with-input-from-string "\x20\u0020\U00000020\056" read-string)))
26