Программные секции Пролога
Программа на Прологе состоит из нескольких программных секций, каждой из которых предшествует ключевое слово, представленное в следующей таблице:
Domains | Определение типов данных |
Database | Объявление предикатов базы данных |
Predicates | Объявление предикатов |
Clauses | Определение фактов или правил |
Goal | Цель |
В программе необязательно наличие всех секций. Обычно в небольшой программе бывают разделы Predicates и Clauses.
В программе может использоваться только одна цель; если цель не указана, Пролог цель запросит. Обычно цель записывают в конце программы.
Ключевые слова разделов можно записывать прописными и строчными буквами.
Комментарии к программе записываются либо парами символов слэш-звездочка:
/* это комментарий,
он занимает несколько строк */
либо остаток строки записывается после знака процента:
% это тоже комментарий
Секция Domains
Для объявления секции domains используются следующие форматы:
1. Первый формат:
name = t ,
где name – имя Пролога,t – один из стандартных типов. Это объявление используется для объектов, которые синтаксически схожи, а семантически различны. Например, предложение
age, number = integer
объявляет два domains целого типа.
2. Второй формат:
mylist = elevent* ,
где mylist – объявление списка элементов, element – элемент, ранее описанный пользователем в Domains либо один из стандартных типов Турбо-Пролога, “*” обозначает список. Hапример,
namlist = integer*
объявляет список целых чисел.
3. Третий формат описывает сложную область определения, задает описание структур.
region = functor1(d1,d2,...); functor2(d3,d4,...);...
где region объявляет сложную область, functor1,functor2 – имена альтернатив составной области, d1,d1,...,d3,d4– один из типов Пролога, стандартный или определенный ранее в программе в Domains (описание типов может отсутствовать).
Пример:
object = int(integer); str(string)
mesto = sprava; sleva .
Данный способ указания Domains позволяет также рекурсивно описывать объекты сложных типов (деревьев).
Секция Ppredicates
Здесь указываются все имена предикатов с соответствующими областями определения аргументов. Аргументы дизъюнктов Пролога называются термами. Существует три типа термов: константа, переменная, составной терм (структура).
Общий вид описания предиката:
name(d1,d2,...) ,
где name – имя предиката, d1, d2,... – соответственно области определения аргумента1, аргумента2 и т.д. Например:
syn(string)
math(preson,person) .