Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка по языку ЛИСП.doc
Скачиваний:
105
Добавлен:
28.06.2014
Размер:
210.94 Кб
Скачать

3. Сообщения о прерывании работы интерпретатора

Когда происходит какое-либо прерывание работы интерпретатора

(например при обнаружении ошибки), выполнение программы приоста-

навливается и на экран выводится предупреждающее сообщение. Вслед

за сообщением появляется строка следующего вида:

Continue,Break,Abort,Top-level,Restart,System?

Эта строка определяет возможные реакции пользователя на данное

прерывание. Выбор реакции задается вводом первой заглавной буквы

соответствующего слова (C - Continue, B - Break и т.д.). Возможны

следующие реакции:

C - Continue (продолжить). Эта команда побуждает интерпрета-

тор передать управление прерванной программе для продолжения рабо-

ты. Прежде чем давать такую команду необходимо убедиться в возмож-

ности продолжения работы!

B - Break (прервать). После этой команды управление временно

передается драйверу интерпретатора (появляется знак $ перед кото-

рым указан номер текущего уровня), что позволяет, например, при

отладке посмотреть и даже изменить структуру выполняемых функций и

переменных. При каждом вложенном выполнении команды Break номер

уровня увеличивается на 1. Возврат в интерпретатор на предыдущий

уровень для продолжения выполнения прерванной программы осущест-

вляется нажатием клавиши Esc.

A - Abort (прекратить). По этой команде прекращается выполне-

ние программы и восстанавливаются аргументы функций к их исходному

состоянию. После чего управление передается драйверу интерпретато-

ра. Функциональные определения, значения свойств переменных и зна-

чения глобальных переменных не изменяются.

T - Top-level (верхний уровень). В этом случае прекращается

выполнение программы, восстанавливаются значения параметров, стан-

дартный ввод и вывод переключаются на консоль и управление переда-

ется драйверу интерпретатора на самый верхний уровень(т.е. отменя-

- 9 -

ются и все прерывания, осуществленные ранее). Функциональные

определения, значения свойств переменных и значения глобальных пе-

ременных не изменяются.

R - Restart (начать сначала). С помощью этой команды закрыва-

ются все файлы и затем загружается новая версия системы muLISP.

Все, ранее сделанные определения значений переменных и функций

пропадают.

S - System (система). Эта команда побуждает интерпретатор

закрыть все файлы и выйти из muLISPа в операционную систему.

4. Сообщения об ошибках

Disk full (переполнение диска) - появляется в том случае,

когда нет места для записи информации на диск при выводе файла.

Поскольку файл при прерывании остается открытым для вывода, то

пользователь может, удалив другие файлы с диска, продолжить выпол-

нение программы и закончить запись файла.

End-Of-File (конец файла) - появляется в случае попытки чте-

ния информации за границами файла. Чаще всего возникает при заг-

рузке файлов исходных текстов программ.

File not found (файл не найден) - появляется, если при выпол-

нении команды LOAD, загружаемый файл не был найден на диске.

Insufficient argument (недостаточно аргументов) - появляется

при вызове функции без указания достаточного числа аргументов.

Invalid argument (неверный аргумент) - появляется при выпол-

нении вещественных функций с невещественными аргументами.

Memory full (переполнение памяти) - появляется, когда не хва-

тает памяти для выполнения программы. Чаще всего появляется при

"бесконечной" рекурсии в неправильно написанной программе. В этом

случае рекомендуется Restart системы, исправление программы и ее

повторное выполнение.

Noninteger argument (нецелочисленный аргумент) - появляется

при выполнении логических функций (LOGAND, LOGNOT,SHIFT, ...) с

аргументами, не являющимися целыми числами.

Nonnumeric argument (нецифровой аргумент) - появляется при

- 10 -

выполнении математических функций с нечисловыми аргументами.

Nonsymbolic argument (несимвольный аргумент) - появляется в

том случае, когда функции SET, SETQ, PUSH, POP, INCQ, DECQ вызыва-

ются с несимвольными аргументами.

Syntax error (синтаксическая ошибка) - проявляется при попыт-

ке интерпретатора прочесть несбалансированное выражение ЛИСПа.

Например ошибочными будут выражения $ ), $(A.), $ (CAR A)) и т.п.

Undefined function (неопределенная функция) - одна из наибо-

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

пользовать вместо имени функции атом, не имеющий функционального

определения (например в случае ошибки при написании имени функ-

ции). Для исправления ошибки нужно выйти на верхний уровень с по-

мощью команды Top-level, исправить в редакторе ошибку, загрузить

файл с текстом программы и запустить ее на выполнение еще раз.

Zero divide (деление на нуль) - в арифметических операциях в

качестве делителя используется нулевой аргумент.