Legacy byte-range subscript index parser — kept for callers that pre-scan.
( P: ParseState, startB: number, endB: number, )
| 1556 | |
| 1557 | /** Legacy byte-range subscript index parser — kept for callers that pre-scan. */ |
| 1558 | function parseSubscriptIndex( |
| 1559 | P: ParseState, |
| 1560 | startB: number, |
| 1561 | endB: number, |
| 1562 | ): TsNode { |
| 1563 | const text = sliceBytes(P, startB, endB) |
| 1564 | if (/^\d+$/.test(text)) return mk(P, 'number', startB, endB, []) |
| 1565 | const m = /^\$([a-zA-Z_]\w*)$/.exec(text) |
| 1566 | if (m) { |
| 1567 | const dollar = mk(P, '$', startB, startB + 1, []) |
| 1568 | const vn = mk(P, 'variable_name', startB + 1, endB, []) |
| 1569 | return mk(P, 'simple_expansion', startB, endB, [dollar, vn]) |
| 1570 | } |
| 1571 | if (text.length === 2 && text[0] === '$' && SPECIAL_VARS.has(text[1]!)) { |
| 1572 | const dollar = mk(P, '$', startB, startB + 1, []) |
| 1573 | const vn = mk(P, 'special_variable_name', startB + 1, endB, []) |
| 1574 | return mk(P, 'simple_expansion', startB, endB, [dollar, vn]) |
| 1575 | } |
| 1576 | return mk(P, 'word', startB, endB, []) |
| 1577 | } |
| 1578 | |
| 1579 | /** |
| 1580 | * Can the current position start a redirect destination literal? |
no test coverage detected