(self)
| 246 | |
| 247 | @memoize |
| 248 | def alts(self) -> Optional[Rhs]: |
| 249 | # alts: alt "|" alts | alt |
| 250 | mark = self._mark() |
| 251 | if ( |
| 252 | (alt := self.alt()) |
| 253 | and |
| 254 | (literal := self.expect("|")) |
| 255 | and |
| 256 | (alts := self.alts()) |
| 257 | ): |
| 258 | return Rhs ( [alt] + alts . alts ) |
| 259 | self._reset(mark) |
| 260 | if ( |
| 261 | (alt := self.alt()) |
| 262 | ): |
| 263 | return Rhs ( [alt] ) |
| 264 | self._reset(mark) |
| 265 | return None |
| 266 | |
| 267 | @memoize |
| 268 | def more_alts(self) -> Optional[Rhs]: |