(self, s, i)
| 390 | return j |
| 391 | |
| 392 | def _parse_string(self, s, i): |
| 393 | m = END_STRING.search(s, i) |
| 394 | if not m: |
| 395 | self._curtoken += s[i:] |
| 396 | return len(s) |
| 397 | j = m.start(0) |
| 398 | self._curtoken += s[i:j] |
| 399 | c = s[j] |
| 400 | if c == '\\': |
| 401 | self.oct = '' |
| 402 | self._parse1 = self._parse_string_1 |
| 403 | return j+1 |
| 404 | if c == '(': |
| 405 | self.paren += 1 |
| 406 | self._curtoken += c |
| 407 | return j+1 |
| 408 | if c == ')': |
| 409 | self.paren -= 1 |
| 410 | if self.paren: # WTF, they said balanced parens need no special treatment. |
| 411 | self._curtoken += c |
| 412 | return j+1 |
| 413 | self._add_token(self._curtoken) |
| 414 | self._parse1 = self._parse_main |
| 415 | return j+1 |
| 416 | |
| 417 | def _parse_string_1(self, s, i): |
| 418 | c = s[i] |
nothing calls this directly
no test coverage detected