Tools for generating NFAs, DFAs and state-transition tables from regular expressions.
This library is built for crate laps
.
```rust use laps_regex::re::{RegexBuilder, CharsMatcher};
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();
asserteq!(matcher.isstrmatch("if"), Some(&Token::Keyword)); asserteq!(matcher.isstrmatch("while1"), Some(&Token::Identifier)); asserteq!(matcher.isstrmatch("42"), Some(&Token::Number)); asserteq!(matcher.isstrmatch("?"), None); ```
```rust use laps_regex::re::{RegexBuilder, BytesMatcher};
let matcher: BytesMatcher<_> = RegexBuilder::new() .add("hello|hi", 0) .add("goodbye|bye", 1) .build_bytes() .unwrap();
asserteq!(matcher.ismatch("hello".asbytes()), Some(&0)); asserteq!(matcher.is_match(&[0x62, 0x79, 0x65]), Some(&1)); ```
Copyright (C) 2022-2023 MaxXing. Licensed under either of Apache 2.0 or MIT at your option.