'Most events are of the form...
650 *( positional_args ) *( key "=" value )
This parses this standard format, populating our **positional_args** and
**keyword_args** attributes and creating attributes if it\'s in our event\'s
**_POSITIONAL_ARGS** and **_KEYWORD_ARGS**.'

def _parse_standard_attr(self):

    content = str(self)
    while True:
        match = QUOTED_KW_ARG.match(content)
        if (not match):
            match = KW_ARG.match(content)
        if match:
            (content, keyword, value) = match.groups()
            self.keyword_args[keyword] = value
        else:
            break
    self.positional_args = content.split()[1:]
    positional = list(self.positional_args)
    for attr_name in self._POSITIONAL_ARGS:
        attr_value = None
        if positional:
            if ((attr_name in self._QUOTED) or ((attr_name in self._OPTIONALLY_QUOTED) and positional[0].startswith('"'))):
                attr_values = [positional.pop(0)]
                if (not attr_values[0].startswith('"')):
                    raise stem.ProtocolError(("The    %s    value    should    be    quoted,    but    didn't    have    a    starting    quote:    %s" % (attr_name, self)))
                while True:
                    if (not positional):
                        raise stem.ProtocolError(("The    %s    value    should    be    quoted,    but    didn't    have    an    ending    quote:    %s" % (attr_name, self)))
                    attr_values.append(positional.pop(0))
                    if attr_values[(-1)].endswith('"'):
                        break
                attr_value = '    '.join(attr_values)[1:(-1)]
            else:
                attr_value = positional.pop(0)
        setattr(self, attr_name, attr_value)
    for (controller_attr_name, attr_name) in self._KEYWORD_ARGS.items():
        setattr(self, attr_name, self.keyword_args.get(controller_attr_name))
