diff --git a/src/parser.rs b/src/parser.rs index b6b7344..2cff09c 100644 --- a/src/parser.rs +++ b/src/parser.rs @@ -215,38 +215,38 @@ where // % atom.pratt(( - infix(none(10), just(Token::BinOp("=")), |l, _, r, _| { + infix(none(1), just(Token::BinOp("=")), |l, _, r, _| { Ast::BinOp(Box::new(l), BinOp::Eq, Box::new(r)) }), - infix(none(10), just(Token::BinOp("<")), |l, _, r, _| { + infix(none(1), just(Token::BinOp("<")), |l, _, r, _| { Ast::BinOp(Box::new(l), BinOp::Lt, Box::new(r)) }), - infix(none(10), just(Token::BinOp("<=")), |l, _, r, _| { + infix(none(1), just(Token::BinOp("<=")), |l, _, r, _| { Ast::BinOp(Box::new(l), BinOp::Le, Box::new(r)) }), // note that these two are flipped - infix(none(10), just(Token::BinOp(">")), |l, _, r, _| { + infix(none(1), just(Token::BinOp(">")), |l, _, r, _| { Ast::BinOp(Box::new(r), BinOp::Lt, Box::new(l)) }), - infix(none(10), just(Token::BinOp(">=")), |l, _, r, _| { + infix(none(1), just(Token::BinOp(">=")), |l, _, r, _| { Ast::BinOp(Box::new(r), BinOp::Le, Box::new(l)) }), - infix(right(3), just(Token::BinOp("%")), |l, _, r, _| { + infix(right(2), just(Token::BinOp("%")), |l, _, r, _| { Ast::BinOp(Box::new(l), BinOp::Mod, Box::new(r)) }), - infix(right(3), just(Token::BinOp("**")), |l, _, r, _| { + infix(right(5), just(Token::BinOp("**")), |l, _, r, _| { Ast::BinOp(Box::new(l), BinOp::Pow, Box::new(r)) }), - infix(left(2), just(Token::BinOp("*")), |l, _, r, _| { + infix(left(4), just(Token::BinOp("*")), |l, _, r, _| { Ast::BinOp(Box::new(l), BinOp::Mul, Box::new(r)) }), - infix(right(2), just(Token::BinOp("/")), |l, _, r, _| { + infix(right(4), just(Token::BinOp("/")), |l, _, r, _| { Ast::BinOp(Box::new(l), BinOp::Div, Box::new(r)) }), - infix(left(1), just(Token::BinOp("+")), |l, _, r, _| { + infix(left(3), just(Token::BinOp("+")), |l, _, r, _| { Ast::BinOp(Box::new(l), BinOp::Add, Box::new(r)) }), - infix(left(1), just(Token::BinOp("-")), |l, _, r, _| { + infix(left(3), just(Token::BinOp("-")), |l, _, r, _| { Ast::BinOp(Box::new(l), BinOp::Sub, Box::new(r)) }), ))