code: def parse_contact(self):
          
          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)
docs: 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.