From d5e9f38f3de317a74f2711e93c7a5df0c89099c7 Mon Sep 17 00:00:00 2001 From: Misko Hevery Date: Fri, 5 Nov 2010 16:41:36 -0700 Subject: fix error in json parser which did not allow 1.2E10 as number --- src/parser.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'src/parser.js') diff --git a/src/parser.js b/src/parser.js index 8dc8f9c2..77800209 100644 --- a/src/parser.js +++ b/src/parser.js @@ -101,26 +101,26 @@ function lex(text, parseStringsForObjects){ '_' == ch || ch == '$'; } function isExpOperator(ch) { - return ch == '-' || ch == '+'; + return ch == '-' || ch == '+' || isNumber(ch); } function readNumber() { var number = ""; var start = index; while (index < text.length) { - var ch = text.charAt(index); + var ch = lowercase(text.charAt(index)); if (ch == '.' || isNumber(ch)) { number += ch; } else { var peekCh = peek(); - if (ch == 'E' && isExpOperator(peekCh)) { + if (ch == 'e' && isExpOperator(peekCh)) { number += ch; } else if (isExpOperator(ch) && peekCh && isNumber(peekCh) && - number.charAt(number.length - 1) == 'E') { + number.charAt(number.length - 1) == 'e') { number += ch; } else if (isExpOperator(ch) && (!peekCh || !isNumber(peekCh)) && - number.charAt(number.length - 1) == 'E') { + number.charAt(number.length - 1) == 'e') { throw 'Lexer found invalid exponential value "' + text + '"'; } else { break; -- cgit v1.2.3