1use regex_bnf::*;
2
3bnf! {
4 Operation = left:<SingleExpr> op:<Operator> right:<*Expr>;
5 Operator = op:r"\+|\*";
6
7 Number = val:r"[0-9]+";
8 Group = "(" expr:<*Expr> ")";
9
10 enum SingleExpr = [Number | Group];
11 enum Expr = [Operation | Group | Number];
12}
13
14fn main() {
15 let input = "1+(2*3)";
16 let parser = StringParser::new(input);
17 let result = Expr::parse(parser);
18
19 match result {
20 Ok(result) => println!("{:#?}", result.0),
21 Err(err) => println!("Error: {}", err),
22 }
23}