Скачиваний:
19
Добавлен:
01.05.2014
Размер:
299.01 Кб
Скачать

Отладчик

Отладчик SKW в основном сходен с отладчиком СиПролога. Однако для того, чтобы проследить за выполнением запроса, этот запрос нужно задать в виде аргумента встроенного предиката "trace/1". К примеру, нижеследующий вызов даст возможность проследить за выполнением

запроса к процедуре "служащий/3":

| ?-trace (служащий (X,Y,Z)).

Помимо сообщений "Call", "Exit", "Back to" и "Fail", отладчик при выполнении запроса может печатать сообщения в трех дополнительных точках:

5) перед тем, как предпринимается попытка унификации активного запроса с заголовком фразы ("Head" - "Заголовок") ;

6) в точке, где унификация активного запроса и заголовка фразы потерпела неудачу ("Miss" — "Мимо");

7) после успешной унификации активного запроса и заголовка фразы в точке, обозначаемой "Neck" ("Шея").

Эти дополнительные сообщения позволяют увидеть результаты выпол­нения унификации запроса с заголовком фразы. В SKW имеется гораздо больше отладочных команд, чем в СиПрологе.

Компилятор

В SKW имеется внешний компилятор, который работает аналогично компилятору языка Си. Принято, что имена исходных файлов Пролога снабжаются расширением «.рl», а имена объектных (откомпилирован­ных) файлов — расширением «.ро». Компилятор вызывается командой операционной системы «рlс». Аргументами этой команды служат имена исходных файлов, а на выходе компилятора создаются объектные файлы. Объектные файлы можно постепенно загрузить в выполняющийся Пролог-процесс при помощи встроенного предиката "load". Откомпилированные процедуры нельзя отлаживать в диалоговом режиме.

Запомненные состояния

Работа с запомненными состояниями во многом аналогична СиПрологу. Однако невыполненные запросы не включаются в запомненное состоя­ние. Для автоматического запуска программы после восстановления запом­ненного состояния программист должен определить программу с именем "main/I". Если такая программа определена, то после восстановления запомненного состояния будет выполнен следующий составной запрос:

| ?-argv(L), main(L), !.

Здесь « argv (L) »— это обращение к аргументам Пролог-процесса, заданным в командной строке. Если пользователь прервет выполнение Пролог-процесса, то оно возобновится с этого составного запроса, а Про­лог не вернется к сообщению-подсказке верхнего уровня. Если програм­ма "main/1" не определена, то после восстановления запомненного состоя­ния Пролог выйдет на сообщение-подсказку верхнего уровня. Можно запустить Пролог-процесс и восстановить запомненное состояние, если прос­то ввести имя этого состояния в командной строке операционной системы.

Интерфейс с иными языками программирования

В SKW допускается подключение к Пролог-процессу функций язы­ка Си. В Прологе каждая функция языка Си будет рассматриваться как встроенный предикат. Механизм установления связи будет следующим. Интерфейс между Си-функцией и Прологом задается в файле, имя кото­рого имеет расширение «.pmi». В команде операционной системе "pmic" в качестве аргумента указывается файл с расширением «.pmi». Эта ко­манда генерирует файл с расширением «.рmо». Затем при помощи ко­манды операционной системы "pkd", аргументами которой служат файл с расширением «.рmо» и соответствующий объектный Си-файл, порож­дается запомненное состояние Пролога. После восстановления запомнен­ного состояния можно вызывать Си-функции через указанный интерфейс.

Соседние файлы в папке Гл.6,7,Прилож.,Допол