(context: &mut Context<'a>)
| 287 | } |
| 288 | |
| 289 | fn 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 | |
| 314 | fn parse_object<'a>(context: &mut Context<'a>) -> Result<Object<'a>, ParseError> { |
| 315 | debug_assert!(context.token() == Some(Token::OpenBrace)); |
no test coverage detected
searching dependent graphs…