| 56 | }; |
| 57 | |
| 58 | NumberResult scanHexNumber(const std::string& source, size_t len, size_t& i) |
| 59 | { |
| 60 | NumberResult result; |
| 61 | i += 2; // skip "0x"/"0X" |
| 62 | if(i >= len || !isHexDigit(source[i])) |
| 63 | { |
| 64 | result.has_error = true; |
| 65 | } |
| 66 | else |
| 67 | { |
| 68 | while(i < len && isHexDigit(source[i])) |
| 69 | { |
| 70 | ++i; |
| 71 | } |
| 72 | } |
| 73 | // Hex numbers don't support dot or exponent |
| 74 | if(i < len && (source[i] == '.' || isIdentChar(source[i]))) |
| 75 | { |
| 76 | result.has_error = true; |
| 77 | consumeTrailingGarbage(source, len, i); |
| 78 | } |
| 79 | return result; |
| 80 | } |
| 81 | |
| 82 | NumberResult scanDecimalNumber(const std::string& source, size_t len, size_t& i) |
| 83 | { |
no test coverage detected