# HG changeset patch # User Mike Pavone # Date 1376218988 25200 # Node ID 9d8ae39e8e67c041e700b1761f5e7b7e661577a1 # Parent 224071eed9dd5375300445046db2fa8c85495f23 Handle floating point numbers in JSON parser diff -r 224071eed9dd -r 9d8ae39e8e67 modules/json.tp --- a/modules/json.tp Sun Aug 11 04:02:51 2013 -0700 +++ b/modules/json.tp Sun Aug 11 04:03:08 2013 -0700 @@ -10,6 +10,7 @@ neg <- "-" byte: 0 space <- " " byte: 0 comma <- "," byte: 0 + period <- "." byte: 0 tab <- " " byte: 0 nl <- "\n" byte: 0 cr <- "\r" byte: 0 @@ -22,16 +23,23 @@ l <- str length minus <- false aft <- -1 + ignore <- false while: { at < l } do: { b <- str byte: at if: b = neg { minus <- true } else: { - if: b >= zero && b <= nine { - num <- num * 10 + (str byte: at) - zero + if: b = period { + ignore <- true } else: { - aft <- at - at <- l + if: b >= zero && b <= nine { + if: (not: ignore) { + num <- num * 10 + (str byte: at) - zero + } + } else: { + aft <- at + at <- l + } } } at <- at + 1