- •Приложение 4-5
- •IV. Версии языка пролог СиПролог Поставщик
- •Синтаксис и встроенные предикаты
- •Директивы
- •Среда для разработки программ
- •Отладчик
- •Отладочные команды
- •Компилятор
- •Запомненные состояния
- •Интерфейс с иными языками программирования
- •Расширения языка
- •Квинтус Пролог Поставщик
- •Синтаксис и встроенные предикаты
- •Директивы
- •Среда разработки программ
- •Отладчик
- •Компилятор
- •Запомненные состояния
- •Система программирования на Прологе фирмы Сайлоджик Поставщик
- •Синтаксис и встроенные предикаты
- •Директивы
- •Среда разработки программ
- •Отладчик
- •Компилятор
- •Запомненные состояния
- •Интерфейс с иными языками программирования
- •Расширения
- •Пролог-2 Поставщик
- •Синтаксис и встроенные предикаты
- •Директивы
- •Среда разработки программ
- •Отладчик
- •Компилятор
- •Запомненные состояния
- •Интерфейс с иными языками программирования
- •Расширения
- •Эрити Пролог Поставщик
- •Синтаксис и встроенные предикаты
- •Среда разработки программ
- •Отладчик
- •Компилятор
- •Запомненные состояния
- •Расширения
- •Унсв Пролог Поставщик
- •Синтаксис и встроенные предикаты
- •Директивы
- •Среда разработки программ
- •Отладчик
- •Компилятор
- •Запомненные состояния
- •Интерфейс с иными языками программирования
- •Турбо Пролог Поставщик
- •Синтаксис и встроенные предикаты
- •Среда разработки программ
- •Отладчик
- •Запомненные состояния
- •Интерфейс с иными языками программирования
- •Расширения
- •V. Ответы к упражнениям Ответы к упражнениям
- •Глава 2
- •Глава 3
- •Глава 5
- •Глава 6
- •Глава 7
Отладчик
Отладчик 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о» и соответствующий объектный Си-файл, порождается запомненное состояние Пролога. После восстановления запомненного состояния можно вызывать Си-функции через указанный интерфейс.