~ chicken-core (chicken-5) /tests/reader-tests.scm
Trap1;;;; 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)))