Function: parseclj-lex-number

parseclj-lex-number is a byte-compiled function defined in parseclj-lex.el.

Signature

(parseclj-lex-number)

Documentation

Consume a number and return a :number token representing it.

Source Code

;; Defined in ~/.emacs.d/elpa/parseclj-20231203.1905/parseclj-lex.el
(defun parseclj-lex-number ()
  "Consume a number and return a `:number' token representing it."
  (let ((pos (point)))
    (parseclj-lex-skip-number)

    ;; 10110r2 or 4.3e+22
    (when (member (char-after (point)) '(?E ?e ?r))
      (right-char))

    (parseclj-lex-skip-number)

    ;; trailing M
    (when (eq (char-after (point)) ?M)
      (right-char))

    ;; trailing N clojure.lang.BigInt
    (when (eq (char-after (point)) ?N)
      (right-char))

    ;; clojure.lang.Ratio
    (when (eq (char-after (point)) ?/)
      (right-char)
      (parseclj-lex-skip-number))

    (let ((char (char-after (point))))
      (if (and char (or (and (<= ?a char) (<= char ?z))
                        (and (<= ?A char) (<= char ?Z))
                        (and (member char '(?. ?* ?+ ?! ?- ?_ ?? ?$ ?& ?= ?< ?> ?/)))))
          (progn
            (right-char)
            (parseclj-lex-error-token pos :invalid-number-format))
        (parseclj-lex-token :number
                            (buffer-substring-no-properties pos (point))
                            pos)))))