| 629 | |
| 630 | const BINARY_REGEXP = /0b[01]+(?:_[01]+)*\b/y; |
| 631 | export function binary(scanner: Scanner): ParseResult<number | string> { |
| 632 | scanner.skipWhitespaces(); |
| 633 | const match = scanner.match(BINARY_REGEXP)?.[0]; |
| 634 | if (!match) return failure(); |
| 635 | scanner.next(match.length); |
| 636 | const value = match.slice(2).replaceAll("_", ""); |
| 637 | const number = parseInt(value, 2); |
| 638 | return isNaN(number) ? failure() : success(number); |
| 639 | } |
| 640 | |
| 641 | const OCTAL_REGEXP = /0o[0-7]+(?:_[0-7]+)*\b/y; |
| 642 | export function octal(scanner: Scanner): ParseResult<number | string> { |