exec.rs
Megabyte-scale size constant in source
SHA-256d7bd8ea7f087924c2e584fd60cbe515379f5713fb59bf108cf437885a6f2181a
MaleculeH(Mg)
Evidence
8:59… ibuted
9// except according to those terms.
10
11use std::cell::RefCell;
12use std::collections::HashMap;
13use std::cmp;
14use std::sync::Arc;
15
16use thread_local::CachedThreadLocal;
17use syntax::{Expr, ExprBuilder, Literals};
18
19use backtrack;
20use compile::Compiler;
21use dfa;
22use error::Error;
23use input::{ByteInput, CharInput};
24use literals::LiteralSearcher;
25use pikevm;
26use prog::Program;
27use re_builder::RegexOptions;
28use re_bytes;
29use re_set;
30use re_trait::{RegularExpression, Slot, Locations, as_slots};
31use re_unicode;
32use utf8::next_utf8;
33
34/// `Exec` manages the execution of a regular expression.
35///
36/// In particular, this manages …
605:21… ,
606 ) -> Option<(usize, usize)> {
607 use self::MatchLiteralType::*;
608 match ty {
609 Unanchored => {
610 let lits = &self.ro.nfa.prefixe …
636:4… ) -> dfa::Result<(usize, usize)> {
637 use dfa::Result::*;
638 let end = match dfa::Fsm::forward(
639 &self.ro.dfa,
640 self.cache,
641 …
914:3… start: usize,
915 ) -> bool {
916 use self::MatchNfaType::*;
917 if let Auto = ty {
918 if backtrack::should_exec(self.ro.nfa.len(), text.len() …
1042:23… s check if the haystack is big (>1MB).
1043 if text.len() > (1<<20) && self.ro.nfa.is_anchored_end {
1044 let lcs = self.ro.suffixes.lcs();
1045 if lcs.len() >= 1 && !lcs.is_suffix …