Mercurial > emacs
changeset 81535:041563cafc04
(math-read-number-simple): New function.
author | Jay Belanger <jay.p.belanger@gmail.com> |
---|---|
date | Fri, 22 Jun 2007 01:03:24 +0000 |
parents | b895cdfeedc5 |
children | 7508768384f8 |
files | lisp/calc/calc.el |
diffstat | 1 files changed, 18 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/calc/calc.el Thu Jun 21 23:02:14 2007 +0000 +++ b/lisp/calc/calc.el Fri Jun 22 01:03:24 2007 +0000 @@ -3423,6 +3423,24 @@ ;; Syntax error! (t nil)))) +;;; Parse a very simple number, keeping all digits. +(defun math-read-number-simple (s) + (cond + ;; Integer + ((string-match "^[0-9]+$" s) + (cons 'bigpos (math-read-bignum s))) + ;; Minus sign + ((string-match "^-[0-9]+$" s) + (cons 'bigneg (math-read-bignum (substring s 1)))) + ;; Decimal point + ((string-match "^\\(-?[0-9]*\\)\\.\\([0-9]*\\)$" s) + (let ((int (math-match-substring s 1)) + (frac (math-match-substring s 2))) + (list 'float (math-read-number-simple (concat int frac)) + (- (length frac))))) + ;; Syntax error! + (t nil))) + (defun math-match-substring (s n) (if (match-beginning n) (substring s (match-beginning n) (match-end n))