fn comparison_expr(&mut self) -> WeldResult<Box<Expr>> {
        let mut res = self.sum_expr()?;
        // Unlike other expressions, we only allow one operator here; prevents stuff like a>b>c
        if *self.peek() == TLessThan
            || *self.peek() == TLessThanOrEqual
            || *self.peek() == TGreaterThan
            || *self.peek() == TGreaterThanOrEqual
        {
            let op = match *self.next() {
                TLessThan => LessThan,
                TGreaterThan => GreaterThan,
                TLessThanOrEqual => LessThanOrEqual,
                _ => GreaterThanOrEqual,
            };
            let right = self.sum_expr()?;
            res = expr_box(
                BinOp {
                    kind: op,
                    left: res,
                    right,
                },
                Annotations::new(),
            )
        }
        Ok(res)
    }
Parse a <, >, <= or >= expression (for operator precedence).
weld/src/syntax/parser.rs