Scan the stream until a node of type in types or skips is found.
Parameters:
| Name | Type | Description | Default |
types | List[Type[Builder]] | List of types to move the stream pointer to | required |
skips | List[Type[Builder]] | None | | None |
Returns:
| Name | Type | Description |
BuilderNode | BuilderNode | The beginning of the stream which matches a type in types. |
Source code in src/bloqade/builder/parse/stream.py
| def eat(
self, types: List[Type[Builder]], skips: Optional[List[Type[Builder]]] = None
) -> BuilderNode:
"""Scan the stream until a node of type in `types` or `skips` is found.
Args:
types (List[Type[Builder]]): List of types to move the stream pointer to
skips (List[Type[Builder]] | None, optional): List of types to end the
stream scan
Returns:
BuilderNode: The beginning of the stream which matches a type in `types`.
"""
head = self.read_next(types)
curr = head
while curr is not None:
if type(curr.node) not in types:
if skips and type(curr.node) not in skips:
break
curr = curr.next
self.curr = curr
return head
|