basic_parsing/
basic_parsing.rs1use re_parser::ast::Regex;
10use re_parser::parse;
11
12fn main() {
13 let ast = parse("a").unwrap();
15 println!("Pattern: \"a\"");
16 println!("AST: {ast:?}\n");
17
18 let ast = parse("hello").unwrap();
20 println!("Pattern: \"hello\"");
21 match &ast {
22 Regex::Concat(nodes) => println!("AST: Concat of {} nodes", nodes.len()),
23 other => println!("AST: {other:?}"),
24 }
25 println!();
26
27 let ast = parse("cat|dog|bird").unwrap();
29 println!("Pattern: \"cat|dog|bird\"");
30 match &ast {
31 Regex::Alternation(branches) => {
32 println!("AST: Alternation with {} branches:", branches.len());
33 for branch in branches {
34 println!(" {branch:?}");
35 }
36 }
37 other => println!("AST: {other:?}"),
38 }
39 println!();
40
41 for pattern in [".", "^", "$", r"\b"] {
43 let ast = parse(pattern).unwrap();
44 println!("Pattern: {pattern:?} => {ast:?}");
45 }
46 println!();
47
48 let patterns = ["(unclosed", r"\z"];
50 for p in patterns {
51 match parse(p) {
52 Ok(ast) => println!("Pattern: {p:?} => {ast:?}"),
53 Err(e) => println!("Pattern: {p:?} => ERROR: {e}"),
54 }
55 }
56}