Recent versions of this library do not use repositioning but use non-backtrackable assignment to materialize the stream. Should work on any stream. You do run out of memory if the grammar does not commit.
| Did you know ... | Search Documentation: |
| Predicate phrase_from_stream/2 |
phrase_from_stream(:Grammar,
+Stream)reposition property (see stream_property/2).current_input(In), phrase_from_stream(Grammar,In). I wonder if we can push back to stdin