Существует причина, по которой он называется потоком - что-то, что вы можете читать или писать только один раз. Как в «Никто никогда не входит в одну и ту же реку дважды, потому что это не одна и та же река, и он не тот же человек». (замените "river" на "stream").
Потоки, поддерживаемые файлами, обеспечивают произвольный доступ, но это скорее исключение. Кроме того, файл может быть обрезан и / или переписан во время чтения, так что вы не сможете искать назад или вперед в потоке файла, который вы только что прочитали.
Самые практичные алгоритмы синтаксического анализа, которые когда-либо изучались каждый байт ввода один раз и последовательно - это делает их пригодными для использования с любым потоком, например, файлом, каналом, сокетом. Возможно, вы захотите реализовать свой синтаксический анализ таким способом.
Существуют другие алгоритмы синтаксического анализа, которые наиболее эффективны, когда они могут искать ввод туда и обратно. Для этих алгоритмов предпочтительным способом является отображение всего файла или указание c его частей в памяти.