def _parse_comment_trail(self):  # type: () -> Tuple[str, str, str]
        """
        Returns (comment_ws, comment, trail)
        If there is no comment, comment_ws and comment will
        simply be empty.
        """
        if self.end():
            return "", "", ""

        comment = ""
        comment_ws = ""
        self.mark()

        while True:
            c = self._current

            if c == "\n":
                break
            elif c == "#":
                comment_ws = self.extract()

                self.mark()
                self.inc()  # Skip #

                # The comment itself
                while not self.end() and not self._current.is_nl() and self.inc():
                    pass

                comment = self.extract()
                self.mark()

                break
            elif c in " \t\r":
                self.inc()
            else:
                raise self.parse_error(UnexpectedCharError, c)

            if self.end():
                break

        while self._current.is_spaces() and self.inc():
            pass

        if self._current == "\r":
            self.inc()

        if self._current == "\n":
            self.inc()

        trail = ""
        if self._idx != self._marker or self._current.is_ws():
            trail = self.extract()

        return comment_ws, comment, trail
def _parse_comment_trail ( self ) : if self . end ( ) : return "" , "" , "" comment = "" comment_ws = "" self . mark ( ) while True : c = self . _current if c == "\n" : break elif c == "#" : comment_ws = self . extract ( ) self . mark ( ) self . inc ( ) while not self . end ( ) and not self . _current . is_nl ( ) and self . inc ( ) : pass comment = self . extract ( ) self . mark ( ) break elif c in " \t\r" : self . inc ( ) else : raise self . parse_error ( UnexpectedCharError , c ) if self . end ( ) : break while self . _current . is_spaces ( ) and self . inc ( ) : pass if self . _current == "\r" : self . inc ( ) if self . _current == "\n" : self . inc ( ) trail = "" if self . _idx != self . _marker or self . _current . is_ws ( ) : trail = self . extract ( ) return comment_ws , comment , trail
Returns (comment_ws, comment, trail)
        If there is no comment, comment_ws and comment will
        simply be empty.