merged trunk
authorAndrea Griffini <agriff@tin.it>
Wed, 1 May 2013 09:34:32 +0000 (11:34 +0200)
committerAndrea Griffini <agriff@tin.it>
Wed, 1 May 2013 09:34:32 +0000 (11:34 +0200)
1  2 
src/read.lisp

diff --cc src/read.lisp
              (incf index))))
        (unless (= index size) (return))
        ;; Everything went ok, we have a float
+       ;; XXX: Use FLOAT when implemented.
 -      (/ (* sign (expt 10.0d0 (* exponent-sign exponent)) number) divisor))))
 -
 +      (/ (* sign (expt 10.0 (* exponent-sign exponent)) number) divisor))))
  
  (defun !parse-integer (string junk-allow)
    (block nil
      (let ((value 0)
             (list 'unquote (ls-read-1 stream))))
        ((char= ch #\#)
         (read-sharp stream))
 +      ((char= ch #\|)
 +       (%read-char stream)
 +       (let ((string (read-escaped-until stream (lambda (x) (char= x #\|)))))
 +         (%read-char stream)
 +         (read-symbol string)))
        (t
 -       (let ((string (read-until stream #'terminalp)))
 +       (let ((string (read-escaped-until stream #'terminalp)))
-          (or (values (!parse-integer string nil))
+          (or (read-integer string)
               (read-float string)
               (read-symbol string)))))))