- •Приложение 4-5
- •IV. Версии языка пролог СиПролог Поставщик
- •Синтаксис и встроенные предикаты
- •Директивы
- •Среда для разработки программ
- •Отладчик
- •Отладочные команды
- •Компилятор
- •Запомненные состояния
- •Интерфейс с иными языками программирования
- •Расширения языка
- •Квинтус Пролог Поставщик
- •Синтаксис и встроенные предикаты
- •Директивы
- •Среда разработки программ
- •Отладчик
- •Компилятор
- •Запомненные состояния
- •Система программирования на Прологе фирмы Сайлоджик Поставщик
- •Синтаксис и встроенные предикаты
- •Директивы
- •Среда разработки программ
- •Отладчик
- •Компилятор
- •Запомненные состояния
- •Интерфейс с иными языками программирования
- •Расширения
- •Пролог-2 Поставщик
- •Синтаксис и встроенные предикаты
- •Директивы
- •Среда разработки программ
- •Отладчик
- •Компилятор
- •Запомненные состояния
- •Интерфейс с иными языками программирования
- •Расширения
- •Эрити Пролог Поставщик
- •Синтаксис и встроенные предикаты
- •Среда разработки программ
- •Отладчик
- •Компилятор
- •Запомненные состояния
- •Расширения
- •Унсв Пролог Поставщик
- •Синтаксис и встроенные предикаты
- •Директивы
- •Среда разработки программ
- •Отладчик
- •Компилятор
- •Запомненные состояния
- •Интерфейс с иными языками программирования
- •Турбо Пролог Поставщик
- •Синтаксис и встроенные предикаты
- •Среда разработки программ
- •Отладчик
- •Запомненные состояния
- •Интерфейс с иными языками программирования
- •Расширения
- •V. Ответы к упражнениям Ответы к упражнениям
- •Глава 2
- •Глава 3
- •Глава 5
- •Глава 6
- •Глава 7
Директивы
Если во время выполнения процедуры требуется добавлять и удалять фразы определенного предиката, то этот предикат следует определить как динамический при помощи директивы вида:
:— dynamic король/2.
Если предикат "король/2" не объявить как динамический, то при употреблении по отношению к нему встроенных предикатов "assert" и "retract" интерпретатор потерпит неудачу и выдаст сообщение об ошибке. Встроенный предикат "clause" (см. разд. 4.9) также будет работать только с динамическими предикатами.
Среда разработки программ
Квинтус Пролог можно запускать либо как самостоятельный процесс, либо через специальный интерфейс с редактором EMACS. Если Квинтус Пролог работает совместно с EMACS, то на экране дисплея, как правило, будут два окна. Верхнее окно содержит текст из исходного файла с Пролог-программой, а нижнее окно — информацию Пролог-процесса, причем обмен данными происходит через буфер редактора EMACS. Для окна с файлом исходной программы имеются команды редактора EMACS, обеспечивающие пошаговый просмотр или компиляцию фраз в активный Пролог-процесс. К примеру, если все фразы некоторой процедуры сгруппированы в одной части исходного файла, то с помощью одной EMACS-коман-ды можно будет найти все эти фразы и просмотреть или откомпилировать их. В редактор EMACS были внесены и другие расширения, обеспечивающие работу с синтаксическими формами Пролога.
В окне обработки Пролога вся выходная информация Пролог-системы автоматически заносится в буфер редактора EMACS. По окончании сеанса работы этот буфер обычно теряется, хотя при помощи явного указания можно переписать его содержимое в файл. Буфер - это своего рода регистрационный механизм, хранящий сведения о сеансе работы. Существует EMACS-команда, позволяющая отыскать и повторно выполнить запрос, введенный ранее в процессе работы.
Если в СиПрологе интерпретатор встречает запрос к предикату, не содержащемуся в текущей программе, то он просто терпит неудачу. В Квинтус Прологе программист может определять поведение системы для случая, когда попадется неизвестный предикат. По умолчанию запрос к неизвестному предикату вызывает включение отладчика. При помощи команд отладчика программист может просмотреть или откомпилировать файл, содержащий этот предикат (или ввести его с клавиатуры), и дать указание системе повторить выполнение запроса.
Отладчик
Отладчик Квинтус Пролога в целом аналогичен отладчику СиПролога, но обладает значительно большим количеством отладочных команд.
Компилятор
В Квинтус Прологе есть и пошаговый компилятор, и интерпретатор. Во время одного сеанса можно свободно смешивать интерпретируемый и откомпилированный коды. Компилятор является пошаговым в том смысле, что в любом месте можно транслировать новые фразы в выполняющийся Пролог-процесс. Откомпилированный код выполняется значительно быстрее, чем интерпретируемый, но для интерпретируемого кода обеспечивается выдача большего объема отладочной информации. Как правило» процедуру при разработке следует подвергать интерпретации, а затем, после тщательной отладки, ее нужно компилировать.