def parse(self, argv):
if not argv:<EOL><INDENT>raise BadNumberOfArguments(<NUM_LIT:1>, <NUM_LIT:0>)<EOL><DEDENT>argument = argv.pop(<NUM_LIT:0>)<EOL>lookup = self.casesensitive and argument or argument.lower()<EOL>if lookup in self.special:<EOL><INDENT>return self.special[lookup]<EOL><DEDENT>argv = [(self.strip and s.strip() or s) for s in argument.split(self.separator)]<EOL>values = []<EOL>while argv:<EOL><INDENT>values.append(self.format.parse(argv))<EOL><DEDENT>return values<EOL>
Pop, parse and return the first arg from argv.

        The arg will be .split() based on self.separator and the (optionally 
        stripped) items will be parsed by self.format and returned as a list. 

        Raise BadNumberOfArguments or BadArgument on errors.

        NOTE: args will be modified.