def term(self):
        """
        term: atom (('*' | '/' | '//') atom)*
        """
        node = self.atom()

        while self.token.nature in (Nature.MUL, Nature.DIV, Nature.INT_DIV):
            token = self.token
            if token.nature == Nature.MUL:
                self._process(Nature.MUL)
            elif token.nature == Nature.DIV:
                self._process(Nature.DIV)
            elif token.nature == Nature.INT_DIV:
                self._process(Nature.INT_DIV)
            else:
                self._error()

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

        return node