fn product_expr(&mut self) -> WeldResult<Box<Expr>> {
        let mut res = self.ascribe_expr()?;
        while *self.peek() == TTimes || *self.peek() == TDivide || *self.peek() == TModulo {
            let op = match *self.next() {
                TTimes => Multiply,
                TDivide => Divide,
                _ => Modulo,
            };
            let right = self.ascribe_expr()?;
            res = expr_box(
                BinOp {
                    kind: op,
                    left: res,
                    right,
                },
                Annotations::new(),
            )
        }
        Ok(res)
    }
Parse a product expression with terms separated by *, / and % (for precedence).
weld/src/syntax/parser.rs