use std::str::FromStr;
grammar;
pub Grammar: Vec<i32> = {
Exprs
}
Exprs: Vec<i32> = {
<es:Exprs> "," <e:Expr> => {
let mut expr_return = es;
expr_return.push(e);
expr_return
},
<e:Expr> => vec![e],
};
Expr: i32 = {
<e:Expr> "+" <t:Factor> => e + t,
<e:Expr> "-" <t:Factor> => e - t,
Factor
};
Factor: i32 = {
<f:Factor> "*" <i:Indicies> => f * i,
<f:Factor> "/" <i:Indicies> => f / i,
Indicies
};
Indicies: i32 = {
<i:Indicies> "^" <t:Term> => i ^ t,
Term
};
Term: i32 = { Num, "(" <Expr> ")" };
Num: i32 = r"(\-?)[0-9]+" => i32::from_str(<>).unwrap();