anchor.diff:              ;; This character is not a digit in the current base.
               (return))
             (setf number (+ (* number read-base) weight)))))))
  -
  -(defun read-maybe-nothing (stream char)
  -  (let ((retval (multiple-value-list
  -                 (funcall (get-coerced-cmt-entry char *readtable*)
  -                          stream
  -                          char))))
  -    (when retval
  -      (setf (cdr retval) nil))))
   
   ;; Can't use read-delimited-list because it doesn't handle dotted lists
   (defun read-left-parenthesis (stream first)
  
positive.code:   ;; exponent = exponent-marker [sign] decimal-digit+
    ;; exponent-marker = d | D | e | E | f | F | l | L | s | S
    (let ((integer-part 0)
          (decimal-part 0.0)
          (saw-integer-digits nil)
          (saw-decimal-digits nil)
          (saw-decimal-point nil)
          (exponent #\F)
          (exponent-sign 1)
          (exponent-value 0)
          (sign 1)
  
negative.code:       (when (peek)
          (return-from read-float))
        ;; TODO, deal with float type selection correctly.
        (coerce
         (* sign
            (+ integer-part decimal-part)
            ;; ### 10.0 to work around a missing feature in FLOAT. No bignum support.
            (expt 10.0d0 (* exponent-sign exponent-value)))
         (ecase (char-upcase exponent)
           (#\S 'short-float)
           (#\F 'single-float)
           (#\D 'double-float)
           (#\L 'long-float)
           (#\E *read-default-float-format*))))))
  
  (defun read-integer (token)
    "Attempt to parse TOKEN as an integer. Return false if it can't be parsed as an integer."
  