;;; FIXME: Is it standard to ignore numeric args instead of raising errors?
(defun ignore-numarg (sub-char numarg)
(when numarg
- (warn "A numeric argument was ignored in #~D~A." numarg sub-char)))
+ (warn "A numeric argument was ignored in #~W~A." numarg sub-char)))
\f
;;;; reading arrays and vectors: the #(, #*, and #A readmacros
(make-array (dims) :initial-contents contents))
(unless (typep seq 'sequence)
(%reader-error stream
- "#~DA axis ~D is not a sequence:~% ~S"
+ "#~WA axis ~W is not a sequence:~% ~S"
dimensions axis seq))
(let ((len (length seq)))
(dims len)
(unless (= axis (1- dimensions))
(when (zerop len)
(%reader-error stream
- "#~DA axis ~D is empty, but is not ~
+ "#~WA axis ~W is empty, but is not ~
the last dimension."
dimensions axis))
(setq seq (elt seq 0))))))))
((not radix)
(%reader-error stream "radix missing in #R"))
((not (<= 2 radix 36))
- (%reader-error stream "illegal radix for #R: ~D" radix))
+ (%reader-error stream "illegal radix for #R: ~D." radix))
(t
(let ((res (let ((*read-base* radix))
(read stream t nil t))))
(unless (typep res 'rational)
(%reader-error stream
- "#~A (base ~D) value is not a rational: ~S."
+ "#~A (base ~D.) value is not a rational: ~S."
sub-char
radix
res))
(defun sharp-backslash (stream backslash numarg)
(ignore-numarg backslash numarg)
- (unread-char backslash stream)
- (let* ((*readtable* *standard-readtable*)
- (charstring (read-extended-token stream)))
+ (let ((charstring (read-extended-token-escaped stream)))
(declare (simple-string charstring))
(cond (*read-suppress* nil)
((= (the fixnum (length charstring)) 1)
(char charstring 0))
((name-char charstring))
(t
- (%reader-error stream
- "unrecognized character name: ~S"
+ (%reader-error stream "unrecognized character name: ~S"
charstring)))))
(defun sharp-vertical-bar (stream sub-char numarg)
(ignore-numarg sub-char numarg)
(let ((stream (in-synonym-of stream)))
- (if (lisp-stream-p stream)
+ (if (ansi-stream-p stream)
(prepare-for-fast-read-char stream
(do ((level 1)
(prev (fast-read-char) char)
(set-dispatch-macro-character #\# #\| #'sharp-vertical-bar)
(set-dispatch-macro-character #\# #\p #'sharp-p)
(set-dispatch-macro-character #\# #\P #'sharp-p)
- (set-dispatch-macro-character #\# #\ #'sharp-illegal)
(set-dispatch-macro-character #\# #\) #'sharp-illegal)
(set-dispatch-macro-character #\# #\< #'sharp-illegal)
- ;; FIXME: Should linefeed/newline go in this list too?
- (dolist (cc '#.(list tab-char-code form-feed-char-code return-char-code))
+ (set-dispatch-macro-character #\# #\Space #'sharp-illegal)
+ (dolist (cc '#.(list tab-char-code form-feed-char-code return-char-code
+ line-feed-char-code backspace-char-code))
(set-dispatch-macro-character #\# (code-char cc) #'sharp-illegal)))