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))