static ZZJSON *parse_value(ZZJSON_CONFIG *config) { ZZJSON *retval = NULL; int c; SKIPWS(); c = GETC(); UNGETC(c); switch (c) { case '"': retval = parse_string2(config); break; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case '-': retval = parse_number(config); break; case '{': retval = parse_object(config); break; case '[': retval = parse_array(config); break; case 't': retval = parse_true(config); break; case 'f': retval = parse_false(config); break; case 'n': retval = parse_null(config); break; } if (!retval) { ERROR("value: invalid value"); return retval; } return retval; }
int parse_value(const char** input, JzonValue* output, JzonAllocator* allocator) { skip_whitespace(input); char ch = current(input); switch (ch) { case '{': return parse_object(input, output, false, allocator); case '[': return parse_array(input, output, allocator); case '"': return parse_string(input, output, allocator); case '-': return parse_number(input, output); case 'f': return parse_false(input, output); case 't': return parse_true(input, output); case 'n': return parse_null(input, output); default: return ch >= '0' && ch <= '9' ? parse_number(input, output) : -1; } }
void json::parse_value( std::istream_iterator<char> &it, std::istream_iterator<char> &end, int &line ) { skip_whitespace( it, end, line ); if ( it == end ) { clear(); return; } switch ( *it ) { case '[': parse_array( it, end, line ); break; case '{': parse_object( it, end, line ); break; case '"': parse_string( it, end, line ); break; case 't': parse_true( it, end, line ); break; case 'f': parse_false( it, end, line ); break; case 'n': parse_null( it, end, line ); break; default: parse_number( it, end, line ); } }
void json_parser<_Handler>::value() { char c = cur_char(); if (is_numeric(c)) { number(); return; } switch (c) { case '-': number(); break; case '[': array(); break; case '{': object(); break; case 't': parse_true(); m_handler.boolean_true(); break; case 'f': parse_false(); m_handler.boolean_false(); break; case 'n': parse_null(); m_handler.null(); break; case '"': string(); break; default: json::parse_error::throw_with("value: failed to parse '", cur_char(), "'.", offset()); } }