Function: math-number-regexp

math-number-regexp is a byte-compiled function defined in calc-yank.el.gz.

Signature

(math-number-regexp RADIX-NUM)

Documentation

Return a regexp which will match a Calc number base RADIX-NUM.

Source Code

;; Defined in /usr/src/emacs/lisp/calc/calc-yank.el.gz
(defun math-number-regexp (radix-num)
  "Return a regexp which will match a Calc number base RADIX-NUM."
  (let* ((digit-range
          (cond
           ;; radix 2 to 10
           ((and (<= 2 radix-num)
                 (>= 10 radix-num))
            (concat "[0-"
                    (number-to-string (1- radix-num))
                    "]"))
           ;; radix 11
           ((= 11 radix-num) "[0-9aA]")
           ;; radix 12+
           (t
            (concat "[0-9"
                    "a-" (format "%c" (+ (- ?a 11) radix-num))
                    "A-" (format "%c" (+ (- ?A 11) radix-num))
                    "]"))))
         (integer-regexp (concat digit-range "+"))
         (decimal-regexp (concat digit-range "+\\." digit-range "*")))
    (concat
     " *\\("
     ;; "e" notation
     "[-_+]?" decimal-regexp "[eE][-+]?[0-9]+"
     "\\|"
     "[-_+]?" integer-regexp "[eE][-+]?[0-9]+"
     "\\|"
     ;; Integer+fractions
     "[-_+]?" integer-regexp "*[:/]" integer-regexp "[:/]" integer-regexp
     "\\|"
     ;; Fractions
     "[-_+]?" integer-regexp "[:/]" integer-regexp
     "\\|"
     ;; Decimal point
     "[-_+]?" decimal-regexp
     "\\|"
     ;; Integers
     "[-_+]?" integer-regexp
     "\\) *\\(\n\\|\\'\\)")))