Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции ФЛП.doc
Скачиваний:
18
Добавлен:
27.05.2015
Размер:
632.83 Кб
Скачать

2.3 Основы работы в среде mulisp-85

Начало работы. Для начала работы необходимо загрузить файл mulisp.com. После того, как появится знак доллара можно вводить любое выражение Лиспа. После закрытия последней скобки и нажатия клавиши ENTER, транслятор оценивает это выражение и, если оно составлено верно, вычисляет его и возвращает результат. После этого снова появляется знак доллара. В случае ошибки в выражении делается соответствующее сообщение об ошибке и предлагается следующий выбор действий:

CONTINUE, BREEK, ABORT, TOP-LEVEL, RESTART, SYSTEM

Потом система ожидает, пока пользователь выберет одну из этих опций путем указания на их имя (C, B, A, T, R или S соответственно). При этом опции перечислены в порядке усиления их действия:

C - возвращает значение прерывания и выполнение продолжается дальше;

B - временно приостанавливает выполнение программы и выводит на следующий нижний уровень цикла “чтение - вычисление - вывод”;

A - прерывает вычисление в процессе остановки;

T - возвращает управление верхнему уровню цикла “чтение - вычисление - вывод”;

S - закрывает все открытые файлы, завершает работу в muLISP и возвращает управление операционной системе.

Таким образом, робота интерпретатора происходит по циклическому принципу, который называется основным циклом. Такой циклический тип называется “овальным” Лиспом. Например,

$'DOG

DOG

$(+ 5 -2 4)

7

$(EQUAL 'DOG 'CAT)

NIL.

Для удобства имеется возможность возвратить последние три вызова выражения, последний – с помощью символа +, а второй и третий с конца – с помощью символов ++, +++ соответственно. Аналогично, символы *, **, *** возвращают соответствующие значения вызовов.

Работа с файлами. Данные поступают в среду muLISP через входной поток CIS (current input stream) или выводятся из программы через выходной поток COS (current output stream) В muLISPе существует один входной и один выходной поток. Поэтому для работы с разными файлами и устройствами эти потоки назначают на файл или устройство по необходимости. Для открытия файла и назначения входного потока на этот файл существует специальная функция RDS(read stream):

(RDS 'имя файла)

Данная функция является базовой функцией muLISP и работает в следующих режимах:

Если файл существует на диске и еще не был открыт, то RDS открывает этот файл и делает его активным, т.е. направляет на него входной поток. Иначе функция RDS возвращает NIL.

Если файл уже открыт, то функция RDS делает этот файл активным, и указатель устанавливается на начало файла, т.е. на 0. Сделать файл активным без замены указателя можно следующим вызовом

(SETQ RDS 'имя файла)

По умолчанию тип файла воспринимается как lsp. Если не указано устройство, то по умолчанию берется текущее устройство. После чего проводится считывание текста указанного файла с одновременным выполнением основного цикла, т.е. выполнением программы на языке LISP, которая записана в виде текста в заданном файле. Кроме этого чтение и выполнение можно провести при запуске системы muLISP, если указать имя файла в качестве параметра.

>muLISP [drive:name.type]

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

Для назначения исходящего потока существует функция WRS(write stream). Вызов (WRS) закрывает активный файл и назначает вывод на экран. Функция WRS применяется аналогично функции RDS. Файл может быть открытым как для чтения, так и записи одновременно. Для того, чтобы закрыть неактивный файл, необходимо сначала сделать его активным.

Файлы среды. Среда muLISP – это текущее состояние системы, которая состоит из всех определенных в данный момент структур и выражений. Текущее состояние может быть сохранено с помощью функции SAVE:

(SAVE 'E:FILE)

Указанное выражение создает файл текущего состояния на устройстве E с именем FILE.SYS. В случае успешного завершения возвращает символ T, в противном случае NIL. Сохраненное текущее состояние в виде SYS-файла может быть возобновлено (загружено) в любой другой момент времени с помощью функции LOAD:

(LOAD 'E:FILE),

которая по завершению также возвращает соответственно T или NIL. Текущее состояние может быть также загружено и при запуске системы muLISP:

>muLISP E:FILE

По умолчанию принимается тип файла .SYS.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]