use re_parser::ast::Regex;
use re_parser::parse;
fn main() {
let ast = parse("a").unwrap();
println!("Pattern: \"a\"");
println!("AST: {ast:?}\n");
let ast = parse("hello").unwrap();
println!("Pattern: \"hello\"");
match &ast {
Regex::Concat(nodes) => println!("AST: Concat of {} nodes", nodes.len()),
other => println!("AST: {other:?}"),
}
println!();
let ast = parse("cat|dog|bird").unwrap();
println!("Pattern: \"cat|dog|bird\"");
match &ast {
Regex::Alternation(branches) => {
println!("AST: Alternation with {} branches:", branches.len());
for branch in branches {
println!(" {branch:?}");
}
}
other => println!("AST: {other:?}"),
}
println!();
for pattern in [".", "^", "$", r"\b"] {
let ast = parse(pattern).unwrap();
println!("Pattern: {pattern:?} => {ast:?}");
}
println!();
let patterns = ["(unclosed", r"\z"];
for p in patterns {
match parse(p) {
Ok(ast) => println!("Pattern: {p:?} => {ast:?}"),
Err(e) => println!("Pattern: {p:?} => ERROR: {e}"),
}
}
}