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.
This commit is contained in:
parent
3bd580d398
commit
66d3ff9d38
|
|
@ -208,7 +208,7 @@
|
||||||
[(decimal-char? (char n)) (decimal n neg 0)]))
|
[(decimal-char? (char n)) (decimal n neg 0)]))
|
||||||
(define (leading-zero n neg)
|
(define (leading-zero n neg)
|
||||||
(cond
|
(cond
|
||||||
[(end? n) 0]
|
[(end? n) (return 0)]
|
||||||
[(eq? (char n) #\.) (fpnum (next n) neg 0.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) '(#\E #\e)) (fpnum-exp (next n) neg 0.0)]
|
||||||
[(memq (char n) '(#\X #\x)) (radix (next n) neg 16 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)]))
|
[(octal-char? (char n)) (radix n neg 8 0)]))
|
||||||
(define (radix n neg rad accum)
|
(define (radix n neg rad accum)
|
||||||
(cond
|
(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))])
|
[(hex-char? (char n)) (let ([int (digit->integer (char n))])
|
||||||
(when (fix>= int rad) (fail))
|
(when (fix>= int rad) (fail))
|
||||||
(radix (next n) neg rad (fix+ (fix* accum rad) int)))]))
|
(radix (next n) neg rad (fix+ (fix* accum rad) int)))]))
|
||||||
(define (decimal n neg accum)
|
(define (decimal n neg accum)
|
||||||
(cond
|
(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))]
|
[(eq? (char n) #\.) (fpnum (next n) neg (make-float accum))]
|
||||||
[(memq (char n) '(#\E #\e)) (fpnum-exp (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))])
|
[(decimal-char? (char n)) (let ([int (digit->integer (char n))])
|
||||||
|
|
@ -237,7 +237,7 @@
|
||||||
(float/ 0.1 10.0)))]))
|
(float/ 0.1 10.0)))]))
|
||||||
(define (fpnum n neg accum [pv 0.1])
|
(define (fpnum n neg accum [pv 0.1])
|
||||||
(cond
|
(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)]
|
[(memq (char n) '(#\E #\e)) (fpnum-exp (next n) neg accum)]
|
||||||
[(decimal-char? (char n)) (let ([int (digit->integer (char n))])
|
[(decimal-char? (char n)) (let ([int (digit->integer (char n))])
|
||||||
(fpnum (next n) neg
|
(fpnum (next n) neg
|
||||||
|
|
@ -257,9 +257,8 @@
|
||||||
(fpnum-exp-digit* (next n) accum neg int))]))
|
(fpnum-exp-digit* (next n) accum neg int))]))
|
||||||
(define (fpnum-exp-digit* n accum neg expon)
|
(define (fpnum-exp-digit* n accum neg expon)
|
||||||
(cond
|
(cond
|
||||||
[(end? n) ((if neg float/ float*)
|
[(end? n) (return ((if neg float/ float*)
|
||||||
accum
|
accum (pow 10.0 (make-float expon))))]
|
||||||
(pow 10.0 (make-float expon)))]
|
|
||||||
[(decimal-char? (char n)) (let ([int (digit->integer (char n))])
|
[(decimal-char? (char n)) (let ([int (digit->integer (char n))])
|
||||||
(fpnum-exp-digit* (next n) accum neg
|
(fpnum-exp-digit* (next n) accum neg
|
||||||
(fix+ (fix* expon 10) int)))]))
|
(fix+ (fix* expon 10) int)))]))
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue