
- •IV. Версии языка пролог СиПролог Поставщик
- •Синтаксис и встроенные предикаты
- •Директивы
- •Среда для разработки программ
- •Отладчик
- •Отладочные команды
- •Компилятор
- •Запомненные состояния
- •Интерфейс с иными языками программирования
- •Расширения языка
- •Квинтус Пролог Поставщик
- •Синтаксис и встроенные предикаты
- •Директивы
- •Среда разработки программ
- •Отладчик
- •Компилятор
- •Запомненные состояния
- •Система программирования на Прологе фирмы Сайлоджик Поставщик
- •Синтаксис и встроенные предикаты
- •Директивы
- •Среда разработки программ
- •Отладчик
- •Компилятор
- •Запомненные состояния
- •Интерфейс с иными языками программирования
- •Расширения
- •Пролог-2 Поставщик
- •Синтаксис и встроенные предикаты
- •Директивы
- •Среда разработки программ
- •Отладчик
- •Компилятор
- •Запомненные состояния
- •Интерфейс с иными языками программирования
- •Расширения
- •Эрити Пролог Поставщик
- •Синтаксис и встроенные предикаты
- •Среда разработки программ
- •Отладчик
- •Компилятор
- •Запомненные состояния
- •Расширения
- •Унсв Пролог Поставщик
- •Синтаксис и встроенные предикаты
- •Директивы
- •Среда разработки программ
- •Отладчик
- •Компилятор
- •Запомненные состояния
- •Интерфейс с иными языками программирования
- •Турбо Пролог Поставщик
- •Синтаксис и встроенные предикаты
- •Среда разработки программ
- •Отладчик
- •Запомненные состояния
- •Интерфейс с иными языками программирования
- •Расширения
- •V. Ответы к упражнениям Ответы к упражнениям
- •Глава 2
- •Глава 3
- •Глава 5
- •Глава 6
- •Глава 7
Директивы
Важным моментом при проектировании модуля на языке Пролог-2 (см. ниже) является то, как в нем определяются предикаты — как общие (public) или как приватные (private). К общему предикату можно обращаться извне данного модуля, а к приватному предикату ~ только в пределах этого модуля. По умолчанию, все предикаты модуля являются общими. Все предикаты модуля можно превратить в приватные при помощи директивы "private/0", не имеющей аргументов, либо в общие по директиве "pubHc/0". Конкретный предикат можно сделать приватным при помощи директивы "private/I" или общим по директиве "public/1".
С целью осуществления оптимизации во время компиляции можно при помощи директивы "mode" указать направленность аргументов предиката (входной или выходной аргумент). Например, в приводимом ниже правиле "итог" первый аргумент всегда должен быть входным, а второй -выходным:
% +
итог (клиент (_, Тариф, Дни), Сумма) :-
Сумма is Тариф * Дни.
Директива "mode", информирующая компилятор о свойствах аргументов правила "итог", имеет вид:
?-mode итог (+, -).
Если программу нужно откомпилировать в объектный модуль, то все обращения в исходном Пролог-файле к предикатам (не встроенным), которые не определены в этом файле, должны объявляться при помощи директивы "external".
Среда разработки программ
Среда Пролога-2 организована в виде модулей. Модулем может быть либо Пролог-код, просмотренный интерпретатором, либо откомпилированный Пролог-код, либо объектный код программы, написанной на другом языке. Модули можно подключать к Пролог-процессу либо явно (при помощи вызова встроенного предиката "open—module"), либо автоматически при запуске процесса. В Прологе-2 имеется свой механизм виртуальной памяти, и частью спецификации модуля является указание о том, где он должен находиться — целиком в реальной памяти или частично в реальной и частично в виртуальной памяти. Виртуальная память предоставляет возможность написания программ очень большого размера за счет снижения скорости их выполнения. Многие вспомогательные программы, такие как интерпретатор верхнего уровня, текстовый редактор и отладчик, реализованы в виде самостоятельных модулей, поэтому они не занимают места в памяти, когда ими не пользуются.
Модули
Предикаты специфицируются внутри модуля либо как общие, либо как приватные. К общим предикатам можно обращаться вне модуля, в котором они определены, в то время как на приватные предикаты можно ссылаться только внутри данного модуля. В каждый момент сеанса работы с Прологом существует текущий выходной модуль и текущий входной модуль. Текущий выходной модуль - это модуль, куда помещаются фразы, только что добавленные в программу.
Редактор
В Прологе-2 имеется встроенный полноэкранный редактор, удобный для внесения небольших изменений в существующие программы. После запуска редактора на экран дисплея выводится список модулей, которые можно редактировать. После выбора определенного модуля будет показан список предикатов этого модуля. После того как программист выберет некоторый предикат, редактор выведет на экран текст всех фраз, относящихся к предикату, и далее будет функционировать как редактор текстов. В редактор заложена информация о синтаксисе Пролога, поэтому он позволяет заранее обнаруживать синтаксические ошибки.