MCPcopy Create free account
hub / github.com/NodeDB-Lab/nodedb / tokenize

Function tokenize

nodedb-sql/src/ddl_ast/graph_parse/tokenizer.rs:12–40  ·  view source on GitHub ↗
(sql: &str)

Source from the content-addressed store, hash-verified

10}
11
12pub(super) fn tokenize(sql: &str) -> Vec<Tok<'_>> {
13 let bytes = sql.as_bytes();
14 let mut out = Vec::new();
15 let mut i = 0;
16 while i < bytes.len() {
17 let b = bytes[i];
18 if b.is_ascii_whitespace()
19 || b == b','
20 || b == b';'
21 || b == b'('
22 || b == b')'
23 || b == b'['
24 || b == b']'
25 {
26 i += 1;
27 continue;
28 }
29 if b == b'\'' {
30 i = consume_quoted(sql, bytes, i, &mut out);
31 continue;
32 }
33 if b == b'{' {
34 i = consume_object(sql, bytes, i, &mut out);
35 continue;
36 }
37 i = consume_word(sql, bytes, i, &mut out);
38 }
39 out
40}
41
42fn consume_quoted<'a>(sql: &'a str, bytes: &[u8], start: usize, out: &mut Vec<Tok<'a>>) -> usize {
43 let content_start = start + 1;

Callers 2

try_parseFunction · 0.70

Calls 5

consume_quotedFunction · 0.85
consume_objectFunction · 0.85
consume_wordFunction · 0.85
as_bytesMethod · 0.45
lenMethod · 0.45

Tested by

no test coverage detected