anchor.diff:                                (when (or (= char "-") (= char "+")) (consume!))
   
                                 ;; And exponent digits
  -                              (while (between? (string/char-at str (succ offset)) "0" "9")
  +                              (while (or (between? (string/char-at str (succ offset))  "0" "9")
  +                                         (= (string/char-at str (succ offset)) "'")) ; thousands here too
                                   (consume!)))
   
  -                            (string->number (string/sub str (.> start :offset) offset))]))
  +                            (string->number (apply .. (string/split (string/sub str (.> start :offset) offset) "'")))]))
                   (append-with! {:tag "number" :value val} start)
   
                   ;; Ensure the next character is a terminator of some sort, otherwise we'd allow things like 0x2-2
  
positive.code: 
                           ;; Consume all remaining characters matching this
                           (set! char (string/char-at str (succ offset)))
                           (while (p char)
                             (consume!)
                             (set! char (string/char-at str (succ offset))))
  
                           ;; And convert the digit to a string
                           (string->number (string/sub str start offset) base))))]
      ;; Scan the input stream, consume one character, then read til the end of that token.
      (while (<= offset length)
        (with (char (string/char-at str offset))
  
negative.code:                                hexadecimal and roman numbers."
                                (range (position)) "# must be followed by x, b or r")]
                             [true
                              (print! "decimal")
                              ;; Parse leading digits
                              (while (or (between? (string/char-at str (succ offset))  "0" "9")
                                         (= (string/char-at str (succ offset)) "'")) ; thousands separator
                                (consume!))
  
                              ;; Consume decimal places
                              (when (= (string/char-at str (succ offset)) ".")
                                (consume!)
                                (while (or (between? (string/char-at str (succ offset))  "0" "9")
                                           (= (string/char-at str (succ offset)) "'")) ; thousands here too
                                  (consume!)))
  
                              ;; Consume exponent
  