Программные секции Пролога

Программа на Прологе состоит из нескольких программных секций, каждой из которых предшествует ключевое слово, представленное в следующей таблице:

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) .