Added allowed escaped strings to shlex.py

This commit is contained in:
Jeremy Fincher 2003-04-14 07:17:48 +00:00
parent 5c3cf2bc93
commit f5cf223ea6

View File

@ -28,6 +28,7 @@ class shlex:
self.lineno = 1 self.lineno = 1
self.debug = 0 self.debug = 0
self.token = '' self.token = ''
self.backslash = False
self.filestack = [] self.filestack = []
self.source = None self.source = None
if self.debug: if self.debug:
@ -134,14 +135,19 @@ class shlex:
continue continue
elif self.state in self.quotes: elif self.state in self.quotes:
self.token = self.token + nextchar self.token = self.token + nextchar
if nextchar == self.state: if nextchar == '\\':
self.state = ' ' self.backslash = True
break else:
elif not nextchar: # end of file if not self.backslash and nextchar == self.state:
if self.debug >= 2: self.state = ' '
print "shlex: I see EOF in quotes state" break
# XXX what error should be raised here? elif self.backslash:
raise ValueError, "No closing quotation" self.backslash = False
elif not nextchar: # end of file
if self.debug >= 2:
print "shlex: I see EOF in quotes state"
# XXX what error should be raised here?
raise ValueError, "No closing quotation"
elif self.state == 'a': elif self.state == 'a':
if not nextchar: if not nextchar:
self.state = None # end of file self.state = None # end of file
@ -157,11 +163,8 @@ class shlex:
elif nextchar in self.commenters: elif nextchar in self.commenters:
self.instream.readline() self.instream.readline()
self.lineno = self.lineno + 1 self.lineno = self.lineno + 1
elif nextchar in self.wordchars: elif nextchar in self.wordchars or nextchar in self.quotes:
self.token = self.token + nextchar self.token = self.token + nextchar
elif nextchar in self.quotes:
self.state = nextchar
break
else: else:
self.pushback = [nextchar] + self.pushback self.pushback = [nextchar] + self.pushback
if self.debug >= 2: if self.debug >= 2:
@ -210,4 +213,3 @@ if __name__ == '__main__':
print "Token: " + repr(tt) print "Token: " + repr(tt)
else: else:
break break
# vim:set shiftwidth=4 tabstop=8 expandtab textwidth=78: