MCPcopy Create free account
hub / github.com/dylan-sutton-chavez/edge-python / next_token

Method next_token

std/json/src/main/tokenizer.rs:47–68  ·  view source on GitHub ↗
(&mut self)

Source from the content-addressed store, hash-verified

45 }
46
47 pub fn next_token(&mut self) -> Result<Token, JsonError> {
48 self.skip_ws();
49 if self.pos >= self.src.len() { return Ok(Token::Eof); }
50 let c = self.src[self.pos];
51 match c {
52 b'{' => { self.pos += 1; Ok(Token::LBrace) }
53 b'}' => { self.pos += 1; Ok(Token::RBrace) }
54 b'[' => { self.pos += 1; Ok(Token::LBracket) }
55 b']' => { self.pos += 1; Ok(Token::RBracket) }
56 b',' => { self.pos += 1; Ok(Token::Comma) }
57 b':' => { self.pos += 1; Ok(Token::Colon) }
58 b'"' => self.read_string(),
59 b'-' => self.read_number_or_neg_infinity(),
60 b'0'..=b'9' => self.read_number(),
61 b't' => self.read_keyword(b"true", Token::True),
62 b'f' => self.read_keyword(b"false", Token::False),
63 b'n' => self.read_keyword(b"null", Token::Null),
64 b'N' => self.read_keyword(b"NaN", Token::Constant("NaN".to_string())),
65 b'I' => self.read_keyword(b"Infinity", Token::Constant("Infinity".to_string())),
66 _ => Err(self.err("unexpected character")),
67 }
68 }
69
70 fn read_keyword(&mut self, kw: &[u8], tok: Token) -> Result<Token, JsonError> {
71 if self.src.len() < self.pos + kw.len() || &self.src[self.pos..self.pos + kw.len()] != kw {

Callers 5

parseFunction · 0.45
parse_valueFunction · 0.45
parse_arrayFunction · 0.45
parse_objectFunction · 0.45
parse_object_pairsFunction · 0.45

Calls 7

read_numberMethod · 0.80
read_keywordMethod · 0.80
skip_wsMethod · 0.45
lenMethod · 0.45
read_stringMethod · 0.45
errMethod · 0.45

Tested by

no test coverage detected