Mercurial > repos > tabletprog
changeset 169:9d8ae39e8e67
Handle floating point numbers in JSON parser
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Sun, 11 Aug 2013 04:03:08 -0700 |
parents | 224071eed9dd |
children | 869399ff7faa |
files | modules/json.tp |
diffstat | 1 files changed, 12 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- 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