code: def _parseSelectorPseudo(self, src, selector):
          
          ctxsrc = src
          if not src.startswith(':'):
              raise self.ParseError('Selector Pseudo \':\' not found', src, ctxsrc)
          src = re.search('^:{1,2}(.*)', src, re.M | re.S).group(1)
  
          name, src = self._getIdent(src)
          if not name:
              raise self.ParseError('Selector Pseudo identifier not found', src, ctxsrc)
  
          if src.startswith('('):
              # function
              src = src[1:].lstrip()
              src, term = self._parseExpression(src, True)
              if not src.startswith(')'):
                  raise self.ParseError('Selector Pseudo Function closing \')\' not found', src, ctxsrc)
              src = src[1:]
              selector.addPseudoFunction(name, term)
          else:
              selector.addPseudo(name)
  
          return src, selector
docs: pseudo
          : ':' [ IDENT | function ]
          ;