0.7.3.1:
[sbcl.git] / src / code / sharpm.lisp
index 6ca5a51..233a35a 100644 (file)
@@ -8,16 +8,13 @@
 ;;;; files for more information.
 
 (in-package "SB!IMPL")
-
-(file-comment
-  "$Header$")
 \f
 (declaim (special *read-suppress* *standard-readtable* *bq-vector-flag*))
 
 ;;; 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)))