diff --git a/src/main.rs b/src/main.rs --- a/src/main.rs +++ b/src/main.rs @@ -1,6 +1,7 @@ +use std::env; use regexp::Regexp; -fn main() { +fn test() { let tests = ["", "a", "ab", "aabb", "abab", "abcd", "abcbcdbcd"]; for pattern in ["a(b|c)", "a*b*", "(ab)*", "a((bc)*d)*", "(a|b)*a(a|b)(a|b)(a|b)", "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"] { println!("# {pattern}"); @@ -17,3 +18,22 @@ fn main() { println!(); } } + +fn main() { + let args: Vec = env::args().collect(); + match args[1].as_str() { + "test" => test(), + "match" => { + let r = match Regexp::new(&args[2].to_string()) { + Ok(r1) => r1.determinize().reduce().normalize(), + Err(e) => { + panic!("ERROR: {e}"); + } + }; + println!("{}", r.eval(args[3].to_string())); + } + s => { + println!("An unknown command: \"{s}\". Use \"match\" or \"test\".") + } + } +}