From 66d3ff9d388c291ee212a62eb3fd92d45820f3e1 Mon Sep 17 00:00:00 2001 From: Jesse McDonald Date: Sat, 14 Jul 2012 14:55:17 -0500 Subject: [PATCH] Fix a reader issue which prevented reading numbers. Previous change to (fail) by default assumed (return) was called on success, which wasn't the case. This rectifies that omission. --- src/lib/reader.rls | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/lib/reader.rls b/src/lib/reader.rls index 1019aa5..69896fc 100644 --- a/src/lib/reader.rls +++ b/src/lib/reader.rls @@ -208,7 +208,7 @@ [(decimal-char? (char n)) (decimal n neg 0)])) (define (leading-zero n neg) (cond - [(end? n) 0] + [(end? n) (return 0)] [(eq? (char n) #\.) (fpnum (next n) neg 0.0)] [(memq (char n) '(#\E #\e)) (fpnum-exp (next n) neg 0.0)] [(memq (char n) '(#\X #\x)) (radix (next n) neg 16 0)] @@ -216,13 +216,13 @@ [(octal-char? (char n)) (radix n neg 8 0)])) (define (radix n neg rad accum) (cond - [(end? n) (if neg (fix-neg accum) accum)] + [(end? n) (return (if neg (fix-neg accum) accum))] [(hex-char? (char n)) (let ([int (digit->integer (char n))]) (when (fix>= int rad) (fail)) (radix (next n) neg rad (fix+ (fix* accum rad) int)))])) (define (decimal n neg accum) (cond - [(end? n) (if neg (fix-neg accum) accum)] + [(end? n) (return (if neg (fix-neg accum) accum))] [(eq? (char n) #\.) (fpnum (next n) neg (make-float accum))] [(memq (char n) '(#\E #\e)) (fpnum-exp (next n) neg (make-float accum))] [(decimal-char? (char n)) (let ([int (digit->integer (char n))]) @@ -237,7 +237,7 @@ (float/ 0.1 10.0)))])) (define (fpnum n neg accum [pv 0.1]) (cond - [(end? n) (if neg (float-neg accum) accum)] + [(end? n) (return (if neg (float-neg accum) accum))] [(memq (char n) '(#\E #\e)) (fpnum-exp (next n) neg accum)] [(decimal-char? (char n)) (let ([int (digit->integer (char n))]) (fpnum (next n) neg @@ -257,9 +257,8 @@ (fpnum-exp-digit* (next n) accum neg int))])) (define (fpnum-exp-digit* n accum neg expon) (cond - [(end? n) ((if neg float/ float*) - accum - (pow 10.0 (make-float expon)))] + [(end? n) (return ((if neg float/ float*) + accum (pow 10.0 (make-float expon))))] [(decimal-char? (char n)) (let ([int (digit->integer (char n))]) (fpnum-exp-digit* (next n) accum neg (fix+ (fix* expon 10) int)))]))