scryer-prolog icon indicating copy to clipboard operation
scryer-prolog copied to clipboard

New JSON parser number parsing discrepancy

Open Jean-Luc-Picard-2021 opened this issue 2 years ago • 0 comments

I get for example:

$ target/release/scryer-prolog -v
"v0.9.0-181-g8e9302ea"
$ target/release/scryer-prolog
?- number_chars(X, "7.075657757024522e-7").
   X = 7.075657757024522e-7.

?- json_chars(X, "7.075657757024522e-7", "").
   X = number(7.075657757024521e-7)

The two results are different:

?- C = "7.075657757024522e-7", 
    number_chars(X, C), 
    json_chars(number(Y), C, ""), 
    X == Y.
   false.

BTW: I used this fuzzer to find the number:

?- repeat, random(X), Y is X/1000000, number_chars(Y,C), json_chars(number(Z),C,""), Z \== Y.

See also: https://en.wikipedia.org/wiki/Fuzzing

Jean-Luc-Picard-2021 avatar Aug 16 '22 00:08 Jean-Luc-Picard-2021