code: def get_invalid_parameter(value):
      
      invalid_parameter = InvalidParameter()
      while value and value[0] != ';':
          if value[0] in PHRASE_ENDS:
              invalid_parameter.append(ValueTerminal(value[0],
                                                     'misplaced-special'))
              value = value[1:]
          else:
              token, value = get_phrase(value)
              invalid_parameter.append(token)
      return invalid_parameter, value
docs: Read everything up to the next ';'.
  
      This is outside the formal grammar.  The InvalidParameter TokenList that is
      returned acts like a Parameter, but the data attributes are None.