Parser now correctly reads floats in scientific notation.

Change-Id: I7abb14a4b6c596674d6aff2b9de6e63603c0d2dc
Tested: on Windows and Linux.
This commit is contained in:
Wouter van Oortmerssen
2014-07-10 13:40:55 -07:00
parent 2208de0676
commit 93df5697a0
2 changed files with 23 additions and 0 deletions

View File

@@ -200,6 +200,13 @@ void Parser::Next() {
if (*cursor_ == '.') {
cursor_++;
while (isdigit(static_cast<unsigned char>(*cursor_))) cursor_++;
// See if this float has a scientific notation suffix. Both JSON
// and C++ (through strtod() we use) have the same format:
if (*cursor_ == 'e' || *cursor_ == 'E') {
cursor_++;
if (*cursor_ == '+' || *cursor_ == '-') cursor_++;
while (isdigit(static_cast<unsigned char>(*cursor_))) cursor_++;
}
token_ = kTokenFloatConstant;
} else {
token_ = kTokenIntegerConstant;