Parse a top level contact expression, these consist of a name
        expression a special char and an email expression.

        The characters found in a name and email expression are returned.

def parse_contact(self):
        """Parse a top level contact expression, these consist of a name
        expression a special char and an email expression.

        The characters found in a name and email expression are returned.
        """
        self.parse_whitespace()
        name = self.parse_name()  # parse a name expression and get the string.
        if not name:  # No name was found so shout it out.
            raise PartpyError(self, 'Expecting a name')

        self.parse_whitespace()
        # allow name and email to be delimited by either a ':' or '-'
        if not self.match_any_char(':-'):
            raise PartpyError(self, 'Expecting : or -')
        self.eat_length(1)
        self.parse_whitespace()

        email = self.parse_email()  # parse an email and store its string.
        if not email:
            raise PartpyError(self, 'Expecting an email address')
        return (name, email)