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