anchor.diff:          (*read-suppress* nil)
           (*read-default-float-format* 'single-float))
       (dolist (test
  -              '(
  -                ;; integer  ::= [sign] digit+      
  -                (nil "0"  0.)
  -                (nil "1"  1.)
  -                (nil "2"  2.)
  -                (nil "9"  9.)
  -                (nil "10" 10.)
  -                (nil "11" 11.)
  -                (nil "12" 12.)
  -                (nil "19" 19.)
  -                (((*read-base* 3.)) "0"  0.)
  -                (((*read-base* 3.)) "1"  1.)
  -                (((*read-base* 3.)) "2"  2.)
  -                (((*read-base* 3.)) "9"  |9|)
  -                (((*read-base* 3.)) "10" 3.)
  -                (((*read-base* 3.)) "11" 4.)
  -                (((*read-base* 3.)) "13" |13|)
  -                (nil "-0"  -0.)
  -                (nil "-1"  -1.)
  -                (nil "-2"  -2.)
  -                (nil "-9"  -9.)
  -                (nil "-10" -10.)
  -                (nil "-11" -11.)
  -                (nil "-12" -12.)
  -                (nil "-19" -19.)
  -                (((*read-base* 3.)) "-0"  -0.)
  -                (((*read-base* 3.)) "-1"  -1.)
  -                (((*read-base* 3.)) "-2"  -2.)
  -                (((*read-base* 3.)) "-9"  |-9|)
  -                (((*read-base* 3.)) "-10" -3.)
  -                (((*read-base* 3.)) "-11" -4.)
  -                (((*read-base* 3.)) "-13" |-13|)
  -                (nil "+0"  +0.)
  -                (nil "+1"  +1.)
  -                (nil "+2"  +2.)
  -                (nil "+9"  +9.)
  -                (nil "+10" +10.)
  -                (nil "+11" +11.)
  -                (nil "+12" +12.)
  -                (nil "+19" +19.)
  -                (((*read-base* 3.)) "+0"  +0.)
  -                (((*read-base* 3.)) "+1"  +1.)
  -                (((*read-base* 3.)) "+2"  +2.)
  -                (((*read-base* 3.)) "+9"  |+9|)
  -                (((*read-base* 3.)) "+10" +3.)
  -                (((*read-base* 3.)) "+11" +4.)
  -                (((*read-base* 3.)) "+13" |+13|)
  -                ;; integer  ::= [sign] decimal-digit+ decimal-point 
  -                (nil "0."  0.)
  -                (nil "1."  1.)
  -                (nil "2."  2.)
  -                (nil "9."  9.)
  -                (nil "10." 10.)
  -                (nil "11." 11.)
  -                (nil "12." 12.)
  -                (nil "19." 19.)
  -                (((*read-base* 3.)) "0."  0.)
  -                (((*read-base* 3.)) "1."  1.)
  -                (((*read-base* 3.)) "2."  2.)
  -                (((*read-base* 3.)) "9."  9.)
  -                (((*read-base* 3.)) "10." 10.)
  -                (((*read-base* 3.)) "11." 11.)
  -                (((*read-base* 3.)) "13." 13.)
  -                (nil "-0."  -0.)
  -                (nil "-1."  -1.)
  -                (nil "-2."  -2.)
  -                (nil "-9."  -9.)
  -                (nil "-10." -10.)
  -                (nil "-11." -11.)
  -                (nil "-12." -12.)
  -                (nil "-19." -19.)
  -                (((*read-base* 3.)) "-0."  -0.)
  -                (((*read-base* 3.)) "-1."  -1.)
  -                (((*read-base* 3.)) "-2."  -2.)
  -                (((*read-base* 3.)) "-9."  -9.)
  -                (((*read-base* 3.)) "-10." -10.)
  -                (((*read-base* 3.)) "-11." -11.)
  -                (((*read-base* 3.)) "-13." -13.)
  -                (nil "+0."  +0.)
  -                (nil "+1."  +1.)
  -                (nil "+2."  +2.)
  -                (nil "+9."  +9.)
  -                (nil "+10." +10.)
  -                (nil "+11." +11.)
  -                (nil "+12." +12.)
  -                (nil "+19." +19.)
  -                (((*read-base* 3.)) "+0."  +0.)
  -                (((*read-base* 3.)) "+1."  +1.)
  -                (((*read-base* 3.)) "+2."  +2.)
  -                (((*read-base* 3.)) "+9."  +9.)
  -                (((*read-base* 3.)) "+10." +10.)
  -                (((*read-base* 3.)) "+11." +11.)
  -                (((*read-base* 3.)) "+13." +13.)
  -                ;; ratio    ::= [sign] {digit}+ slash {digit}+
  -                (nil "0/0"    nil division-by-zero)
  -                (nil "1/0"    nil division-by-zero)
  -                (nil "10/000" nil division-by-zero)
  -                (nil "0/1" 0)
  -                (nil "1/1" 1)
  -                (nil "2/1" 2)
  -                (nil "20/10" 2)
  -                (nil "200/100" 2)
  -                (nil "0/2" 0)
  -                (nil "1/2" 1/2)
  -                (nil "0/20" 0)
  -                (nil "10/20" 1/2)
  -                (nil "100/200" 1/2)
  -                (nil "001/2" 1/2)
  -                (nil "000/20" 0)
  -                (nil "010/20" 1/2)
  -                (nil "100/200" 1/2)
  -                (nil "12345/54321" 12345/54321)
  -                (nil "+0/0"    nil division-by-zero)
  -                (nil "+1/0"    nil division-by-zero)
  -                (nil "+10/000" nil division-by-zero)
  -                (nil "+0/1" 0)
  -                (nil "+1/1" 1)
  -                (nil "+2/1" 2)
  -                (nil "+20/10" 2)
  -                (nil "+200/100" 2)
  -                (nil "+0/2" 0)
  -                (nil "+1/2" 1/2)
  -                (nil "+0/20" 0)
  -                (nil "+10/20" 1/2)
  -                (nil "+100/200" 1/2)
  -                (nil "+001/2" 1/2)
  -                (nil "+000/20" 0)
  -                (nil "+010/20" 1/2)
  -                (nil "+100/200" 1/2)
  -                (nil "+12345/54321" 12345/54321)
  -                (nil "-0/0"    nil division-by-zero)
  -                (nil "-1/0"    nil division-by-zero)
  -                (nil "-10/000" nil division-by-zero)
  -                (nil "-0/1" -0)
  -                (nil "-1/1" -1)
  -                (nil "-2/1" -2)
  -                (nil "-20/10" -2)
  -                (nil "-200/100" -2)
  -                (nil "-0/2" -0)
  -                (nil "-1/2" -1/2)
  -                (nil "-0/20" -0)
  -                (nil "-10/20" -1/2)
  -                (nil "-100/200" -1/2)
  -                (nil "-001/2" -1/2)
  -                (nil "-000/20" -0)
  -                (nil "-010/20" -1/2)
  -                (nil "-100/200" -1/2)
  -                (nil "-12345/54321" -12345/54321)
  +             '(
  +               ;; integer  ::= [sign] digit+      
  +               (nil "0"  0.)
  +               (nil "1"  1.)
  +               (nil "2"  2.)
  +               (nil "9"  9.)
  +               (nil "10" 10.)
  +               (nil "11" 11.)
  +               (nil "12" 12.)
  +               (nil "19" 19.)
  +               (((*read-base* 3.)) "0"  0.)
  +               (((*read-base* 3.)) "1"  1.)
  +               (((*read-base* 3.)) "2"  2.)
  +               (((*read-base* 3.)) "9"  |9|)
  +               (((*read-base* 3.)) "10" 3.)
  +               (((*read-base* 3.)) "11" 4.)
  +               (((*read-base* 3.)) "13" |13|)
  +               (nil "-0"  -0.)
  +               (nil "-1"  -1.)
  +               (nil "-2"  -2.)
  +               (nil "-9"  -9.)
  +               (nil "-10" -10.)
  +               (nil "-11" -11.)
  +               (nil "-12" -12.)
  +               (nil "-19" -19.)
  +               (((*read-base* 3.)) "-0"  -0.)
  +               (((*read-base* 3.)) "-1"  -1.)
  +               (((*read-base* 3.)) "-2"  -2.)
  +               (((*read-base* 3.)) "-9"  |-9|)
  +               (((*read-base* 3.)) "-10" -3.)
  +               (((*read-base* 3.)) "-11" -4.)
  +               (((*read-base* 3.)) "-13" |-13|)
  +               (nil "+0"  +0.)
  +               (nil "+1"  +1.)
  +               (nil "+2"  +2.)
  +               (nil "+9"  +9.)
  +               (nil "+10" +10.)
  +               (nil "+11" +11.)
  +               (nil "+12" +12.)
  +               (nil "+19" +19.)
  +               (((*read-base* 3.)) "+0"  +0.)
  +               (((*read-base* 3.)) "+1"  +1.)
  +               (((*read-base* 3.)) "+2"  +2.)
  +               (((*read-base* 3.)) "+9"  |+9|)
  +               (((*read-base* 3.)) "+10" +3.)
  +               (((*read-base* 3.)) "+11" +4.)
  +               (((*read-base* 3.)) "+13" |+13|)
  +               ;; integer  ::= [sign] decimal-digit+ decimal-point 
  +               (nil "0."  0.)
  +               (nil "1."  1.)
  +               (nil "2."  2.)
  +               (nil "9."  9.)
  +               (nil "10." 10.)
  +               (nil "11." 11.)
  +               (nil "12." 12.)
  +               (nil "19." 19.)
  +               (((*read-base* 3.)) "0."  0.)
  +               (((*read-base* 3.)) "1."  1.)
  +               (((*read-base* 3.)) "2."  2.)
  +               (((*read-base* 3.)) "9."  9.)
  +               (((*read-base* 3.)) "10." 10.)
  +               (((*read-base* 3.)) "11." 11.)
  +               (((*read-base* 3.)) "13." 13.)
  +               (nil "-0."  -0.)
  +               (nil "-1."  -1.)
  +               (nil "-2."  -2.)
  +               (nil "-9."  -9.)
  +               (nil "-10." -10.)
  +               (nil "-11." -11.)
  +               (nil "-12." -12.)
  +               (nil "-19." -19.)
  +               (((*read-base* 3.)) "-0."  -0.)
  +               (((*read-base* 3.)) "-1."  -1.)
  +               (((*read-base* 3.)) "-2."  -2.)
  +               (((*read-base* 3.)) "-9."  -9.)
  +               (((*read-base* 3.)) "-10." -10.)
  +               (((*read-base* 3.)) "-11." -11.)
  +               (((*read-base* 3.)) "-13." -13.)
  +               (nil "+0."  +0.)
  +               (nil "+1."  +1.)
  +               (nil "+2."  +2.)
  +               (nil "+9."  +9.)
  +               (nil "+10." +10.)
  +               (nil "+11." +11.)
  +               (nil "+12." +12.)
  +               (nil "+19." +19.)
  +               (((*read-base* 3.)) "+0."  +0.)
  +               (((*read-base* 3.)) "+1."  +1.)
  +               (((*read-base* 3.)) "+2."  +2.)
  +               (((*read-base* 3.)) "+9."  +9.)
  +               (((*read-base* 3.)) "+10." +10.)
  +               (((*read-base* 3.)) "+11." +11.)
  +               (((*read-base* 3.)) "+13." +13.)
  +               ;; ratio    ::= [sign] {digit}+ slash {digit}+
  +               (nil "0/0"    nil division-by-zero)
  +               (nil "1/0"    nil division-by-zero)
  +               (nil "10/000" nil division-by-zero)
  +               (nil "0/1" 0)
  +               (nil "1/1" 1)
  +               (nil "2/1" 2)
  +               (nil "20/10" 2)
  +               (nil "200/100" 2)
  +               (nil "0/2" 0)
  +               (nil "1/2" 1/2)
  +               (nil "0/20" 0)
  +               (nil "10/20" 1/2)
  +               (nil "100/200" 1/2)
  +               (nil "001/2" 1/2)
  +               (nil "000/20" 0)
  +               (nil "010/20" 1/2)
  +               (nil "100/200" 1/2)
  +               (nil "12345/54321" 12345/54321)
  +               (nil "+0/0"    nil division-by-zero)
  +               (nil "+1/0"    nil division-by-zero)
  +               (nil "+10/000" nil division-by-zero)
  +               (nil "+0/1" 0)
  +               (nil "+1/1" 1)
  +               (nil "+2/1" 2)
  +               (nil "+20/10" 2)
  +               (nil "+200/100" 2)
  +               (nil "+0/2" 0)
  +               (nil "+1/2" 1/2)
  +               (nil "+0/20" 0)
  +               (nil "+10/20" 1/2)
  +               (nil "+100/200" 1/2)
  +               (nil "+001/2" 1/2)
  +               (nil "+000/20" 0)
  +               (nil "+010/20" 1/2)
  +               (nil "+100/200" 1/2)
  +               (nil "+12345/54321" 12345/54321)
  +               (nil "-0/0"    nil division-by-zero)
  +               (nil "-1/0"    nil division-by-zero)
  +               (nil "-10/000" nil division-by-zero)
  +               (nil "-0/1" -0)
  +               (nil "-1/1" -1)
  +               (nil "-2/1" -2)
  +               (nil "-20/10" -2)
  +               (nil "-200/100" -2)
  +               (nil "-0/2" -0)
  +               (nil "-1/2" -1/2)
  +               (nil "-0/20" -0)
  +               (nil "-10/20" -1/2)
  +               (nil "-100/200" -1/2)
  +               (nil "-001/2" -1/2)
  +               (nil "-000/20" -0)
  +               (nil "-010/20" -1/2)
  +               (nil "-100/200" -1/2)
  +               (nil "-12345/54321" -12345/54321)
   ;;; float    ::= [sign] {decimal-digit}* decimal-point {decimal-digit}+ exponent
   ;;; float    ::= [sign] {decimal-digit}* decimal-point {decimal-digit}+ 
   ;;; float    ::= [sign] {decimal-digit}+ exponent
  
positive.code: 
  
  (tests "complex numbers"
   ((read-from-string "( #C(123 456) #c(-123 456)
                         #C(12.3 456) #c(-123 45.6)
                         #C(123/10 456/100) #c(-123/10 456/100) )")
    (( #c(123 456) #c(-123 456)
                         #c(12.3 456) #c(-123 45.6)
                         #c(123/10 456/100) #c(-123/10 456/100) )
     140)
    nil))
  
  
  
  (tests "read-delimited-list with comments"
   ((with-input-from-string (src " \"!A\"
  ) def)
  ")
      (values (read-delimited-list #\) src)
              (read-delimited-list #\) src)))
    (("!A") (def))
    nil)
  
   ((with-input-from-string (src "#( \"!A\" 
  ) (def)
  ")
      (values (read src)
              (read src)))
    (#("!A") (def))
    nil)
  
   ((with-input-from-string (src "( \"!A\"
  ) (def)
  ")
      (values (read src)
              (read src)))
    (("!A") (def))
    nil)
  
   ((with-input-from-string (src " \"!A\" ; comment
  ) def)
  ")
      (values (read-delimited-list #\) src)
              (read-delimited-list #\) src)))
    (("!A") (def))
    nil)
   
    ((with-input-from-string (src "#( \"!A\"  ; comment
  ) (def)
  ")
      (values (read src)
              (read src)))
    (#("!A") (def))
    nil)
  
    ((with-input-from-string (src "( \"!A\" ; comment
  ) (def)
  ")
      (values (read src)
              (read src)))
    (("!A") (def))
    nil))
  
  
  (tests "lists with comments"
   ((read-from-string "( () (a) (a b) (a b c) (a . ()) (a . b) (a b . ()) (a b . c)
                         ( ; comment
                      ) (a ; comment
                      ) (a ; comment
  
negative.code:           ;;    markers, decimal points, extension characters, and
            ;;    number markers.
            (loop
              :for prevch = #\0 :then ch
              :for ch :across token
              :always (or (digit-char-p ch *read-base*)
                          (find ch "+-.^_")
                          (find ch ratio-markers)
                          (and (alpha-char-p ch)
                               (not (alpha-char-p prevch)))))))))
  
  
  (defun test/potential-number-p ()
  