Lines Matching refs:at
75 Inst { ip: InstPtr, at: InputAt },
95 let start = input.at(start);
132 /// Start backtracking at the given position in the input, but also look
134 fn exec_(&mut self, mut at: InputAt, end: usize) -> bool {
136 // If this is an anchored regex at the beginning of the input, then
139 return if !at.is_start() { false } else { self.backtrack(at) };
144 at = match self.input.prefix_at(&self.prog.prefixes, at) {
146 Some(at) => at,
149 matched = self.backtrack(at) || matched;
153 if at.pos() >= end {
156 at = self.input.at(at.next_pos());
161 /// The main backtracking loop starting at the given input position.
168 self.m.jobs.push(Job::Inst { ip: 0, at: start });
171 Job::Inst { ip, at } => {
172 if self.step(ip, at) {
192 fn step(&mut self, mut ip: InstPtr, mut at: InputAt) -> bool {
197 // next, avoid the push and just mutate `ip` (and possibly `at`)
199 if self.has_visited(ip, at) {
219 self.slots[inst.slot] = Some(at.pos());
224 self.m.jobs.push(Job::Inst { ip: inst.goto2, at });
228 if self.input.is_empty_match(at, inst) {
235 if inst.c == at.char() {
237 at = self.input.at(at.next_pos());
243 if inst.matches(at.char()) {
245 at = self.input.at(at.next_pos());
251 if let Some(b) = at.byte() {
254 at = self.input.at(at.next_pos());
264 fn has_visited(&mut self, ip: InstPtr, at: InputAt) -> bool {
265 let k = ip * (self.input.len() + 1) + at.pos();