| 18 | DEBUG = False |
| 19 | |
| 20 | class TokenIterator: |
| 21 | |
| 22 | look_ahead: Token | None |
| 23 | iterator: Iterator[Token] |
| 24 | |
| 25 | def __init__(self, tkns: Iterable[Token]): |
| 26 | self.iterator = iter(tkns) |
| 27 | self.look_ahead = None |
| 28 | |
| 29 | def __iter__(self) -> "TokenIterator": |
| 30 | return self |
| 31 | |
| 32 | def __next__(self) -> Token: |
| 33 | if self.look_ahead is None: |
| 34 | return next(self.iterator) |
| 35 | else: |
| 36 | res = self.look_ahead |
| 37 | self.look_ahead = None |
| 38 | return res |
| 39 | |
| 40 | def peek(self) -> Token | None: |
| 41 | if self.look_ahead is None: |
| 42 | for tkn in self.iterator: |
| 43 | self.look_ahead = tkn |
| 44 | break |
| 45 | return self.look_ahead |
| 46 | |
| 47 | ROOT = Path(__file__).parent.parent.parent.resolve() |
| 48 | DEFAULT_INPUT = (ROOT / "Python/bytecodes.c").as_posix() |
no outgoing calls
no test coverage detected
searching dependent graphs…