'Move a token from the beginning of the remaining text to the
end of the stack.  If there are no more tokens in the
remaining text, then do nothing.
:return: True if the shift operation was successful.
:rtype: bool'

def shift(self):

    if (len(self._remaining_text) == 0):
        return False
    self._history.append((self._stack[:], self._remaining_text[:]))
    self._shift(self._stack, self._remaining_text)
    return True
