@property<EOL><INDENT>def tables(self) -> List['<STR_LIT>']:<DEDENT>
tables = []  <EOL>tables_append = tables.append<EOL>type_to_spans = self._type_to_spans<EOL>lststr = self._lststr<EOL>shadow = self._shadow[:]<EOL>ss, se = self._span<EOL>spans = type_to_spans.setdefault('<STR_LIT>', [])<EOL>if not spans:<EOL><INDENT>m = True  <EOL>while m:<EOL><INDENT>m = False<EOL>for m in TABLE_FINDITER(shadow):<EOL><INDENT>ms, me = m.span()<EOL>span = [ss + ms + len(m[<NUM_LIT:1>]), ss + me]<EOL>spans.append(span)<EOL>tables_append(Table(lststr, type_to_spans, span, '<STR_LIT>'))<EOL>shadow[ms:me] = b'<STR_LIT:_>' * (me - ms)<EOL><DEDENT><DEDENT>return tables<EOL><DEDENT>span_tuple_to_span_get = {(s[<NUM_LIT:0>], s[<NUM_LIT:1>]): s for s in spans}.get<EOL>m = True<EOL>while m:<EOL><INDENT>m = False<EOL>for m in TABLE_FINDITER(shadow):<EOL><INDENT>ms, me = m.span()<EOL>s, e = ss + ms + len(m[<NUM_LIT:1>]), ss + me<EOL>old_span = span_tuple_to_span_get((s, e))<EOL>if old_span is None:<EOL><INDENT>span = [s, e]<EOL>insort(spans, span)<EOL><DEDENT>else:<EOL><INDENT>span = old_span<EOL><DEDENT>tables_append(Table(lststr, type_to_spans, span, '<STR_LIT>'))<EOL>shadow[ms:me] = b'<STR_LIT:_>' * (me - ms)<EOL><DEDENT><DEDENT>return tables<EOL>
Return a list of found table objects.