Вот контекст: у меня есть файл (или поток), и я хочу обработать его заголовок, остановить, а затем по-разному обработать остальные данные.То есть предположим, что у меня есть поток типа BEGIN GOOD GOOD GOOD GOOD GOOD DONE JUNK JUNK JUNK JUNK ...
.Первая часть (BEGIN GOOD+ DONE
) соответствует моей грамматике, и я хочу остановиться, как только увижу DONE
.
AFAIK, YACC и друзья хотят продолжать потреблять токены, пока их больше нет, поэтому янужно написать больше грамматики, чтобы соответствовать всем JUNK
.Это можно обойти?
Я использую PLY (реализацию Lex и Yacc для Python), но я открыт для общих ответов здесь.