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