1 //! A parser and representation of regular expressions.
2 
3 use regex_syntax::hir::Hir;
4 use regex_syntax::{self, Error, Parser};
5 
6 #[cfg(test)]
7 mod test;
8 
9 pub type Regex = Hir;
10 pub type RegexError = Error;
11 
12 /// Convert a string literal into a parsed regular expression.
parse_literal(s: &str) -> Regex13 pub fn parse_literal(s: &str) -> Regex {
14     match parse_regex(&regex_syntax::escape(s)) {
15         Ok(v) => v,
16         Err(_) => panic!("failed to parse literal regular expression"),
17     }
18 }
19 
20 /// Parse a regular expression like `a+` etc.
parse_regex(s: &str) -> Result<Regex, RegexError>21 pub fn parse_regex(s: &str) -> Result<Regex, RegexError> {
22     let expr = Parser::new().parse(s)?;
23     Ok(expr)
24 }
25