Распознавании нетерминала a встретится ошибка после выделе-
Ния элементов b и c.
Yacc обрабатывает правила, содержащие лексему error,
Так же, как все остальные правила. В результате в ряде сос-
Тояний построенного анализатора оказывается предусмотренным
Действие для лексемы error (отличное от действия error).
Будем говорить, что в этих состояниях лексема error допус-
Тима. Рассмотрим порядок работы анализатора при появлении
Во входном потоке ошибочной лексемы (т.е. лексемы, ввод
которой в данном состоянии вызывает действие error):
Фиксируется состояние ошибки; вызывается функция yyer-
Ror для выдачи сообщения.
Путем обратного просмотра пройденных состояний,начиная
С данного, делается попытка найти состояние, в котором
Допустима лексема error. Отсутствие такого состояния
Говорит о невозможности восстановления, и разбор прек-
Ращается.
Осуществляется возврат в найденное состояние (кроме
Случая, когда им является непосредственно то состояние,
В котором встретилась ошибка)
Выполняется действие, заданное в этом состоянии для
Лексемы error. Очередной входной лексемой становится
Лексема, вызвавшая ошибку.
Разбор продолжается, но анализатор остается в состоянии
Ошибки до тех пор, пока не будут успешно прочитаны и
Обработаны три подряд идущие лексемы. При нахождении
Не нашли, что искали? Воспользуйтесь поиском:
|