comparison: expr (('==' | '!=' | '<=' | '>=' | '<' | '>') expr)*

def comparison(self):
        """
        comparison: expr (('==' | '!=' | '<=' | '>=' | '<' | '>') expr)*
        """
        node = self.expr()

        while self.token.nature in (
            Nature.EQ,
            Nature.NE,
            Nature.LE,
            Nature.GE,
            Nature.LT,
            Nature.GT,
        ):
            token = self.token
            if token.nature == Nature.EQ:
                self._process(Nature.EQ)
            elif token.nature == Nature.NE:
                self._process(Nature.NE)
            elif token.nature == Nature.LE:
                self._process(Nature.LE)
            elif token.nature == Nature.GE:
                self._process(Nature.GE)
            elif token.nature == Nature.LT:
                self._process(Nature.LT)
            elif token.nature == Nature.GT:
                self._process(Nature.GT)
            else:
                self.error()

            node = BinaryOperation(left=node, op=token, right=self.expr())

        return node