(self)
| 393 | |
| 394 | @memoize |
| 395 | def forced_atom(self) -> Optional[Forced]: |
| 396 | # forced_atom: '&' '&' ~ atom |
| 397 | mark = self._mark() |
| 398 | cut = False |
| 399 | if ( |
| 400 | (literal := self.expect('&')) |
| 401 | and |
| 402 | (literal_1 := self.expect('&')) |
| 403 | and |
| 404 | (cut := True) |
| 405 | and |
| 406 | (atom := self.atom()) |
| 407 | ): |
| 408 | return Forced ( atom ) |
| 409 | self._reset(mark) |
| 410 | if cut: return None |
| 411 | return None |
| 412 | |
| 413 | @memoize |
| 414 | def lookahead(self) -> Optional[LookaheadOrCut]: |
no test coverage detected