MCPcopy Create free account
hub / github.com/dprint/jsonc-parser / parse_value

Function parse_value

src/parse_to_ast.rs:289–312  ·  view source on GitHub ↗
(context: &mut Context<'a>)

Source from the content-addressed store, hash-verified

287}
288
289fn parse_value<'a>(context: &mut Context<'a>) -> Result<Option<Value<'a>>, ParseError> {
290 if context.range_stack.len() > context.maximum_nesting_depth {
291 return Err(context.create_error_for_current_range(ParseErrorKind::NestingDepthExceeded));
292 }
293
294 match context.token() {
295 None => Ok(None),
296 Some(token) => match token {
297 Token::OpenBrace => Ok(Some(Value::Object(parse_object(context)?))),
298 Token::OpenBracket => Ok(Some(Value::Array(parse_array(context)?))),
299 Token::String(value) => Ok(Some(Value::StringLit(create_string_lit(context, value)))),
300 Token::Boolean(value) => Ok(Some(Value::BooleanLit(create_boolean_lit(context, value)))),
301 Token::Number(value) => Ok(Some(Value::NumberLit(create_number_lit(context, value)))),
302 Token::Null => Ok(Some(Value::NullKeyword(create_null_keyword(context)))),
303 Token::CloseBracket => Err(context.create_error(ParseErrorKind::UnexpectedCloseBracket)),
304 Token::CloseBrace => Err(context.create_error(ParseErrorKind::UnexpectedCloseBrace)),
305 Token::Comma => Err(context.create_error(ParseErrorKind::UnexpectedComma)),
306 Token::Colon => Err(context.create_error(ParseErrorKind::UnexpectedColon)),
307 Token::Word(_) => Err(context.create_error(ParseErrorKind::UnexpectedWord)),
308 Token::CommentLine(_) => unreachable!(),
309 Token::CommentBlock(_) => unreachable!(),
310 },
311 }
312}
313
314fn parse_object<'a>(context: &mut Context<'a>) -> Result<Object<'a>, ParseError> {
315 debug_assert!(context.token() == Some(Token::OpenBrace));

Callers 3

parse_to_astFunction · 0.70
parse_object_propertyFunction · 0.70
parse_arrayFunction · 0.70

Calls 15

ObjectClass · 0.85
ArrayClass · 0.85
StringLitClass · 0.85
create_string_litFunction · 0.85
BooleanLitClass · 0.85
create_boolean_litFunction · 0.85
NumberLitClass · 0.85
create_number_litFunction · 0.85
NullKeywordClass · 0.85
create_null_keywordFunction · 0.85
lenMethod · 0.80

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…