read: fix #e after #x

Corrects a bug in 0549bfb1e5 where `#x` causes the `e` in `#e` to be
interpreted as 14 instead of the character `#\e`.
This commit is contained in:
Matthew Flatt 2019-05-06 07:56:37 -06:00
parent bed23e221e
commit 93d84170d0
3 changed files with 8 additions and 3 deletions

View File

@ -132,7 +132,12 @@
(5000.0 "1#/2#e4") (5000.0 "1#/2#e4")
(500000000.0 "1/2#e10") (500000000.0 "1/2#e10")
(500000000 "#e1/2#e10") (500000000 "#e1/2#e10")
(36 "#e#x24")
(-36 "#e#x-24")
(36 "#x#e24")
(-36 "#x#e-24")
(16140901064495857664-50176i "#e#x+e#s+e@-e#l-e") (16140901064495857664-50176i "#e#x+e#s+e@-e#l-e")
(16140901064495857664-50176i "#x#e+e#s+e@-e#l-e")
(,(make-rectangular -inf.f 3.1415927f0) "-inf.f+3.1415927f0i") (,(make-rectangular -inf.f 3.1415927f0) "-inf.f+3.1415927f0i")
(,(make-rectangular -inf.0 3.1415927) "-inf.f+3.1415927i") (,(make-rectangular -inf.0 3.1415927) "-inf.f+3.1415927i")

View File

@ -434,7 +434,8 @@
[(#\#) [(#\#)
(define next (fx+ 1 start)) (define next (fx+ 1 start))
(parse-case (parse-case
s next end radix => i ;; use `10` instead of `radix`, because we don't want a hex conversion
s next end 10 => i
[(eof) [(eof)
(fail convert-mode "no character after `#` indicator in `~.a`" s)] (fail convert-mode "no character after `#` indicator in `~.a`" s)]
[(#\e #\E #\i #\I) [(#\e #\E #\i #\I)

View File

@ -54680,8 +54680,7 @@ static const char *startup_source =
"(let-values(((i_0)" "(let-values(((i_0)"
"(if(fx= next_0 end_0)" "(if(fx= next_0 end_0)"
" 'eof" " 'eof"
"(let-values(((c_1)(string-ref s_0 next_0)))" "(let-values(((c_1)(string-ref s_0 next_0)))(maybe-digit c_1 10)))))"
"(maybe-digit c_1 radix_0)))))"
"(if(let-values(((or-part_0)(eqv? i_0 'eof)))(if or-part_0 or-part_0 #f))" "(if(let-values(((or-part_0)(eqv? i_0 'eof)))(if or-part_0 or-part_0 #f))"
"(let-values()" "(let-values()"
"(if(eq?(state->convert-mode convert-mode_0) 'must-read)" "(if(eq?(state->convert-mode convert-mode_0) 'must-read)"