fix: Json.num
Handle negative numbers correctly.
This commit is contained in:
parent
51771d5d07
commit
ffef5635bb
2 changed files with 4 additions and 5 deletions
|
|
@ -197,18 +197,17 @@ def num : Quickparse JsonNumber := do
|
|||
pure 0
|
||||
else
|
||||
natNonZero
|
||||
let res := JsonNumber.fromInt (sign * res)
|
||||
let c? ← peek?
|
||||
let res : JsonNumber ←
|
||||
if c? = some '.' then
|
||||
skip
|
||||
let (n, d) ← natNumDigits
|
||||
if d > USize.size then fail "too many decimals"
|
||||
let mantissa' := res.mantissa * (10^d : Nat) + n
|
||||
let exponent' := res.exponent + d
|
||||
let mantissa' := sign * (res * (10^d : Nat) + n)
|
||||
let exponent' := d
|
||||
JsonNumber.mk mantissa' exponent'
|
||||
else
|
||||
res
|
||||
JsonNumber.fromInt (sign * res)
|
||||
let c? ← peek?
|
||||
if c? = some 'e' ∨ c? = some 'E' then
|
||||
skip
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
"false"
|
||||
"true"
|
||||
"0.0000123456"
|
||||
"1000000"
|
||||
"-1000000"
|
||||
"\"\""
|
||||
"\"abc\""
|
||||
"[true, 123, \"foo\", []]"
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue