| 56 | char next() { return pos < len ? s[pos++] : 0; } |
| 57 | |
| 58 | Value parseValue() { |
| 59 | skipWs(); |
| 60 | char c = peek(); |
| 61 | if (c == '"') return parseString(); |
| 62 | if (c == '{') return parseObject(); |
| 63 | if (c == '[') return parseArray(); |
| 64 | if (c == 't' || c == 'f') return parseBool(); |
| 65 | if (c == 'n') return parseNull(); |
| 66 | if (c == '-' || (c >= '0' && c <= '9')) return parseNumber(); |
| 67 | return Value(); |
| 68 | } |
| 69 | |
| 70 | Value parseString() { |
| 71 | next(); // opening " |