MCPcopy Create free account
hub / github.com/colbymchenry/codegraph / modifier_positions

Function modifier_positions

codegraph-kernel/src/cfnptr.rs:495–515  ·  view source on GitHub ↗

The `(?:(?:static|const|extern|register|volatile)\s+)*` modifier loop: greedy positions after 0..=k iterations, for the k-descending backtrack the INIT/ARRAY skeletons need. No two alternatives share a prefix, so at most one literal can match at a position; an alternative that matches without trailing `\s+` ends the loop (JS: iteration fails, no other alt can fire).

(s: &[u8], start: usize)

Source from the content-addressed store, hash-verified

493/// INIT/ARRAY skeletons need. No two alternatives share a prefix, so at most
494/// one literal can match at a position; an alternative that matches without
495/// trailing `\s+` ends the loop (JS: iteration fails, no other alt can fire).
496fn modifier_positions(s: &[u8], start: usize) -> Vec<usize> {
497 let mut stack = vec![start];
498 loop {
499 let cur = *stack.last().unwrap();
500 let mut advanced = None;
501 for m in MODIFIERS {
502 if s.len() >= cur + m.len() && &s[cur..cur + m.len()] == m {
503 let e = cur + m.len();
504 let w = skip_jsws(s, e);
505 if w > e {
506 advanced = Some(w);
507 }
508 break; // exactly one alternative can literal-match here
509 }
510 }
511 match advanced {
512 Some(w) => stack.push(w),
513 None => return stack,
514 }
515 }
516}
517
518/// `\[[^\]]*\]` at `i` (the INIT/ARRAY declarator form — the class admits

Callers 2

init_bodyFunction · 0.85
array_table_bodyFunction · 0.85

Calls 3

skip_jswsFunction · 0.85
lenMethod · 0.80
unwrapMethod · 0.60

Tested by

no test coverage detected