1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
//! # laps_regex
//!
//! Tools for generating NFAs, DFAs and state-transition tables from
//! regular expressions.
//!
//! This library is built for crate [`laps`](https://crates.io/crates/laps).
//!
//! ## Example: Matching UTF-8 Strings
//!
//! ```
//! use laps_regex::re::{RegexBuilder, CharsMatcher};
//!
//! #[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
//! enum Token {
//! Keyword,
//! Identifier,
//! Number,
//! }
//!
//! let matcher: CharsMatcher<_> = RegexBuilder::new()
//! .add("if|else|while", Token::Keyword)
//! .add("[_a-zA-Z][_a-zA-Z0-9]*", Token::Identifier)
//! .add("[0-9]|[1-9][0-9]+", Token::Number)
//! .build()
//! .unwrap();
//!
//! assert_eq!(matcher.is_str_match("if"), Some(&Token::Keyword));
//! assert_eq!(matcher.is_str_match("while1"), Some(&Token::Identifier));
//! assert_eq!(matcher.is_str_match("42"), Some(&Token::Number));
//! assert_eq!(matcher.is_str_match("?"), None);
//! ```
//!
//! ## Example: Matching Bytes
//!
//! ```
//! use laps_regex::re::{RegexBuilder, BytesMatcher};
//!
//! let matcher: BytesMatcher<_> = RegexBuilder::new()
//! .add("hello|hi", 0)
//! .add("goodbye|bye", 1)
//! .build_bytes()
//! .unwrap();
//!
//! assert_eq!(matcher.is_match("hello".as_bytes()), Some(&0));
//! assert_eq!(matcher.is_match(&[0x62, 0x79, 0x65]), Some(&1));
//! ```
pub mod dfa;
pub mod fa;
pub mod mir;
pub mod nfa;
pub mod re;
pub mod table;