use std::str::FromStr; grammar; pub Expression: i64 = {

)*> => { v.into_iter().fold(p, |acc, (op, p)| if op { acc + p } else { acc - p }) } } AddOp: bool = { "+" => true, "-" => false, } Product: i64 = { )*> => { v.into_iter().fold(t, |acc, (op, t)| if op { acc * t } else { acc / t }) } } MulOp: bool = { "*" => true, "/" => false, } Term: i64 = { Number, "-" => -<>, "(" ")", } Number: i64 = r"[0-9]+" => i64::from_str(<>).unwrap();