Revision e0d45df7
b/scripts/qapi.py | ||
---|---|---|
13 | 13 |
|
14 | 14 |
def tokenize(data): |
15 | 15 |
while len(data): |
16 |
if data[0] in ['{', '}', ':', ',', '[', ']']:
|
|
17 |
yield data[0]
|
|
18 |
data = data[1:]
|
|
19 |
elif data[0] in ' \n':
|
|
20 |
data = data[1:]
|
|
21 |
elif data[0] == "'":
|
|
22 |
data = data[1:]
|
|
16 |
ch = data[0]
|
|
17 |
data = data[1:]
|
|
18 |
if ch in ['{', '}', ':', ',', '[', ']']:
|
|
19 |
yield ch
|
|
20 |
elif ch in ' \n':
|
|
21 |
None
|
|
22 |
elif ch == "'":
|
|
23 | 23 |
string = '' |
24 |
while data[0] != "'": |
|
25 |
string += data[0] |
|
24 |
esc = False |
|
25 |
while True: |
|
26 |
if (data == ''): |
|
27 |
raise Exception("Mismatched quotes") |
|
28 |
ch = data[0] |
|
26 | 29 |
data = data[1:] |
27 |
data = data[1:] |
|
30 |
if esc: |
|
31 |
string += ch |
|
32 |
esc = False |
|
33 |
elif ch == "\\": |
|
34 |
esc = True |
|
35 |
elif ch == "'": |
|
36 |
break |
|
37 |
else: |
|
38 |
string += ch |
|
28 | 39 |
yield string |
29 | 40 |
|
30 | 41 |
def parse(tokens): |
Also available in: Unified diff