Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Теория языков программирования и методы трансляции..pdf
Скачиваний:
28
Добавлен:
05.02.2023
Размер:
3.41 Mб
Скачать

251

Еще чаще такие ситуации возникают, когда в таблице идентификаторов содержится переменная, но ссылки в программе на нее нет. Для выдачи со-

общений о таких ситуациях в грамматику вводятся действия, идентифици-

рующие их.

9.4.3 СООБЩЕНИЯ О СИНТАКСИЧЕСКИХ ОШИБКАХ

Всякий раз при обнаружении анализатором синтаксической ошибки должно печататься соответствующее сообщение. Например,

SYNTAX ERROR IN LINE 22.

Или местоположение ошибки может описываться полнее: SYNTAX ERROR IN LINE 22, SYMBOL 4.

В любом случае пользователь может быть недоволен тем, что сообще-

ние не вполне ясное, так как не указывается, в чем заключается ошибка про-

граммиста. На практике фактическая ошибка программирования могла про-

изойти гораздо раньше, анализатор же сообщает об ошибке только тогда, ко-

гда ему встречается недопустимый символ. Если программист представляет анализатору программу, имеющую синтаксическую ошибку, компилятор,

естественно, не сможет решить, какую программу программист должен был написать. Единственное, что компилятор смог бы сделать, это принять реше-

ние о «ремонте» на минимальном расстоянии, т.е. о ремонте, требующем минимальное число включений символов в текст программы и исключений из него, дающем синтаксически правильную программу. Цель ремонта – обеспечить анализатору условия для продолжения анализа программы.

Хотя, теоретически, ремонт на минимальном расстоянии кажется при-

влекательным, его реализация неэффективна, так как приходится часто воз-

вращаться назад по уже проанализированным частям программы и отменять выполненные компилятором ранее действия. Большинство компиляторов не берутся за такой ремонт. Единственное исправление, которое они осуществ-

ляют, – это вставка, исключение или изменение символов в том месте, где