anchor.diff:                      (digit-char-p (car digits))))
          (pop digits))))
   
  +(defmacro maybe-eat-sign (sign token)
  +  `(when (signp (car ,token))
  +     (setq ,sign (car ,token))
  +     (pop ,token)))
  +
  +(defmacro eat-dot (token)
  +  `(cond ((decimal-dot-p (car ,token))
  +          (pop ,token)
  +          (not ,token))
  +         (t nil)))
  +
   (defun radix-integer-token-p (token radix require-trailing-dot)
     (let ((sign nil)
           (digits nil))
  -    (when (signp (car token))
  -      (setq sign (car token))
  -      (pop token))
       (loop
  +       (maybe-eat-sign sign token)
          (cond ((not token)
                 (return t))
                ((not (digit-char-p (car token) radix))
  
positive.code:     
      (when
          (cond (require-trailing-dot
                 (cond ((decimal-dot-p (car token))
                        (pop token)
                        (not token))
                       (t nil)))
                (t (not token)))
        (make-integer sign (reverse digits) radix))))
  
  
negative.code:         (minor-digits nil)
          (exponent nil))
      ;; read an optional sign
      (maybe-eat-sign sign token)
      ;; read zero or more decimal digits
  
      
  