|
305 |
self.state.parent.buf += d |
305 |
self.state.parent.buf += d |
306 |
self.pop_state() |
306 |
self.pop_state() |
307 |
|
307 |
|
308 |
def hexdigit(c, d): |
308 |
def hexdigit(c): |
309 |
self.state.val *= 16 |
309 |
self.state.val *= 16 |
310 |
self.state.val += ord(c) - ord(d) |
310 |
self.state.val += int(c, 16) |
311 |
self.state.buf += c |
311 |
self.state.buf += c |
312 |
if self.state.val < 0 or self.state.val > 0xff: |
312 |
if self.state.val < 0 or self.state.val > 0xff: |
313 |
raise ParseError(self, "invalid hex escape: out of range " + self.state.buf) |
313 |
raise ParseError(self, "invalid hex escape: out of range " + self.state.buf) |
|
317 |
if self.at_eof(): |
317 |
if self.at_eof(): |
318 |
raise ParseError(self, "unexpected EOF") |
318 |
raise ParseError(self, "unexpected EOF") |
319 |
elif '0' <= c <= '9': |
319 |
elif '0' <= c <= '9': |
320 |
hexdigit(c, '0') |
320 |
hexdigit(c) |
321 |
elif 'A' <= c <= 'F': |
321 |
elif 'A' <= c <= 'F': |
322 |
hexdigit(c, 'A') |
322 |
hexdigit(c) |
323 |
elif 'a' <= c <= 'f': |
323 |
elif 'a' <= c <= 'f': |
324 |
hexdigit(c, 'a') |
324 |
hexdigit(c) |
325 |
elif len(buf): |
325 |
elif len(buf): |
326 |
hexdone() |
326 |
hexdone() |
327 |
self.input_char(c) |
327 |
self.input_char(c) |
328 |
- |
|
|