diff --git a/src/regexp.rs b/src/regexp.rs --- a/src/regexp.rs +++ b/src/regexp.rs @@ -1,6 +1,7 @@ use std::collections::{HashMap, HashSet}; mod token; +pub use token::ParsingError; use token::{Token, parse}; const START: usize = usize::MAX; @@ -28,14 +29,15 @@ fn decode_set(x: u64) ->HashSet { return res; } +#[derive(Debug)] pub struct Regexp { rules: HashMap<(usize, char), HashSet>, end_states: HashSet } impl Regexp { - pub fn new(pattern: &String) -> Regexp { - let r = parse(pattern, 0); + pub fn new(pattern: &String) -> Result { + let r = parse(pattern, 0)?; let pattern_chars = Vec::from_iter(pattern.chars()); let mut rules: HashMap<(usize, char), HashSet> = HashMap::new(); @@ -62,7 +64,7 @@ impl Regexp { end_states.insert(START); } - return Regexp{rules, end_states}; + return Ok(Regexp{rules, end_states}); } pub fn eval(&self, s: String) -> bool {