- •1. Основные принципы работы в системе muLisp
- •3. Сообщения о прерывании работы интерпретатора
- •4. Сообщения об ошибках
- •5. Редактирование текстов программ и загрузка исходных
- •Insert - переключение режимов редактирования
- •6. Организация ввода-вывода
- •7. Отладка программ
- •8.4 Функции сравнения
- •8.5 Логические функции
- •8.6 Функции присваивания
- •8.7 Примитивы определения функций
- •8.8 Арифметические функции
- •8.9 Функционалы
- •8.10 Функции ввода
- •8.12 Функции работы со строками 2.
- •8.13 Работа со стеком 2.
- •8.14 Функции свойств
- •8.15 Контрольные конструкции
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 (деление на нуль) - в арифметических операциях в
качестве делителя используется нулевой аргумент.