Lines Matching defs:Expr
16 pub enum Expr {
18 Add(Box<Expr>, Box<Expr>),
19 Sub(Box<Expr>, Box<Expr>),
20 Mul(Box<Expr>, Box<Expr>),
21 Div(Box<Expr>, Box<Expr>),
22 Paren(Box<Expr>),
33 impl Display for Expr {
35 use self::Expr::*;
47 impl Debug for Expr {
49 use self::Expr::*;
61 fn parens(i: &str) -> IResult<&str, Expr> {
64 delimited(tag("("), map(expr, |e| Expr::Paren(Box::new(e))), tag(")")),
69 fn factor(i: &str) -> IResult<&str, Expr> {
73 Expr::Value,
79 fn fold_exprs(initial: Expr, remainder: Vec<(Oper, Expr)>) -> Expr {
83 Oper::Add => Expr::Add(Box::new(acc), Box::new(expr)),
84 Oper::Sub => Expr::Sub(Box::new(acc), Box::new(expr)),
85 Oper::Mul => Expr::Mul(Box::new(acc), Box::new(expr)),
86 Oper::Div => Expr::Div(Box::new(acc), Box::new(expr)),
91 fn term(i: &str) -> IResult<&str, Expr> {
107 fn expr(i: &str) -> IResult<&str, Expr> {