(typespec, ll)
| 1598 | |
| 1599 | |
| 1600 | def cracktypespec0(typespec, ll): |
| 1601 | selector = None |
| 1602 | attr = None |
| 1603 | if re.match(r'double\s*complex', typespec, re.I): |
| 1604 | typespec = 'double complex' |
| 1605 | elif re.match(r'double\s*precision', typespec, re.I): |
| 1606 | typespec = 'double precision' |
| 1607 | else: |
| 1608 | typespec = typespec.strip().lower() |
| 1609 | m1 = selectpattern.match(markouterparen(ll)) |
| 1610 | if not m1: |
| 1611 | outmess( |
| 1612 | 'cracktypespec0: no kind/char_selector pattern found for line.\n') |
| 1613 | return |
| 1614 | d = m1.groupdict() |
| 1615 | for k in list(d.keys()): |
| 1616 | d[k] = unmarkouterparen(d[k]) |
| 1617 | if typespec in ['complex', 'integer', 'logical', 'real', 'character', 'type']: |
| 1618 | selector = d['this'] |
| 1619 | ll = d['after'] |
| 1620 | i = ll.find('::') |
| 1621 | if i >= 0: |
| 1622 | attr = ll[:i].strip() |
| 1623 | ll = ll[i + 2:] |
| 1624 | return typespec, selector, attr, ll |
| 1625 | ##### |
| 1626 | namepattern = re.compile(r'\s*(?P<name>\b\w+\b)\s*(?P<after>.*)\s*\Z', re.I) |
| 1627 | kindselector = re.compile( |
no test coverage detected