qapi: qapi.py: allow the "'" character to be escaped

Support escaping the escape character, and make more robust (don't die
for '', handle ' without matching '.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
This commit is contained in:
Luiz Capitulino 2012-06-29 20:53:37 -03:00
parent 02d2bd5d57
commit e0d45df7a5

View file

@ -13,18 +13,29 @@
def tokenize(data):
while len(data):
if data[0] in ['{', '}', ':', ',', '[', ']']:
yield data[0]
data = data[1:]
elif data[0] in ' \n':
data = data[1:]
elif data[0] == "'":
data = data[1:]
ch = data[0]
data = data[1:]
if ch in ['{', '}', ':', ',', '[', ']']:
yield ch
elif ch in ' \n':
None
elif ch == "'":
string = ''
while data[0] != "'":
string += data[0]
esc = False
while True:
if (data == ''):
raise Exception("Mismatched quotes")
ch = data[0]
data = data[1:]
data = data[1:]
if esc:
string += ch
esc = False
elif ch == "\\":
esc = True
elif ch == "'":
break
else:
string += ch
yield string
def parse(tokens):