Files
@ 08f1519c859e
Branch filter:
Location: Regular-Expresso/src/main.rs - annotation
08f1519c859e
1.4 KiB
application/rls-services+xml
added Rust documentation
f0b3b1bd87f4 08f1519c859e f4558f3f9f5e f0b3b1bd87f4 a86ff65ec321 f03565ba6137 1a11f659e7b5 08f1519c859e 4f7b6352013d 7e640b0cffa7 7e640b0cffa7 7e640b0cffa7 7e640b0cffa7 7e640b0cffa7 1a11f659e7b5 1a11f659e7b5 1a11f659e7b5 1a11f659e7b5 1a11f659e7b5 f4558f3f9f5e f0b3b1bd87f4 f0b3b1bd87f4 f0b3b1bd87f4 f0b3b1bd87f4 f0b3b1bd87f4 f0b3b1bd87f4 08f1519c859e f0b3b1bd87f4 f0b3b1bd87f4 f0b3b1bd87f4 f0b3b1bd87f4 f0b3b1bd87f4 f0b3b1bd87f4 f0f9655e62ee f0f9655e62ee 08f1519c859e f0f9655e62ee f0f9655e62ee f0f9655e62ee f0f9655e62ee f0f9655e62ee 08f1519c859e f0f9655e62ee f0f9655e62ee f0f9655e62ee f0f9655e62ee f0f9655e62ee f0f9655e62ee f0f9655e62ee f0b3b1bd87f4 08f1519c859e f0b3b1bd87f4 f0b3b1bd87f4 f0b3b1bd87f4 | use std::env;
use regexp::RegexpNFA;
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)", "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"] {
println!("# {pattern}");
let r = match RegexpNFA::new(&pattern.to_string()) {
Ok(r1) => r1.determinize().reduce().normalize(),
Err(e) => {
println!("{e}");
continue;
}
};
for &t in tests.iter() {
println!("{t} {}", r.eval(t.to_string()));
}
println!();
}
}
fn main() {
let args: Vec<String> = env::args().collect();
match args[1].as_str() {
"test" => test(),
"match" => {
let r = match RegexpNFA::new(&args[2].to_string()) {
Ok(r1) => r1.determinize().reduce().normalize(),
Err(e) => {
panic!("ERROR: {e}");
}
};
println!("{}", r.eval(args[3].to_string()));
},
"compare" => {
let r1 = match RegexpNFA::new(&args[2].to_string()) {
Ok(r) => r.determinize().reduce().normalize(),
Err(e) => {
panic!("ERROR: {e}");
}
};
let r2 = match RegexpNFA::new(&args[3].to_string()) {
Ok(r) => r.determinize().reduce().normalize(),
Err(e) => {
panic!("ERROR: {e}");
}
};
println!("{}", r1.find_distinguishing_string(&r2).unwrap_or("None".to_string()));
},
s => {
println!("An unknown command: \"{s}\". Use \"match\", \"compare\" or \"test\".")
}
}
}
|