Синтаксис языка Prolog - Prolog. Синтаксис языка Prolog

В этом разделе статьи речь пойдет о синтаксисе языка, то есть о совокупности правил написания различных элементов и предложений (синтаксических конструкций) данного языка программирования.

Так как синтаксис немного меняется от реализации к реализации, для начала сделаем небольшое "лирическое отступление" о реализациях языка Prolog, поскольку синтаксис меняется от реализации к реализации. Существует большое количество реализаций языка Prolog, как коммерческих, так и свободно распространяемых. Мы будем ориентироваться на SWI-Prolog (www. swi-prolog. org), разработанный в университете города Амстердам. Возможностей данной реализации вполне достаточно для первоначального знакомства с основами логического программирования. SWI-Prolog распространяется под лицензией GPL, что обеспечивает возможность его использования без нарушений чьих-либо коммерческих интересов. Эта версия языка Prolog доступна как пользователям ОС Linux, так и пользователям Windows. Теперь можно перейти собственно к описанию синтаксиса языка.

У каждого имеются свои представления о том, какая форма синтаксиса наиболее естественна и наглядна. К счастью, синтаксис Пролога довольно прост и не дает большого простора для вариаций. Один из спорных вопросов - как следует отличать переменные от атомов. Здесь для обозначения переменных используются имена, начинающиеся с прописной буквы, а для обозначения атомов - со строчной. Кроме того, мы допускаем атомы, составленные из последовательностей знаков, таких как '*', '.' и '='. Некоторые Пролог-системы придерживаются в отношении использования прописных и строчных букв обратного соглашения (когда имена переменных начинаются со строчной буквы). Другие различают имена переменных за счет того, что начинают их со специальной литеры, как, например, '_PERSON' или '*PERSON'. Это удобно для систем, где прописные и строчные буквы не различаются. Другим моментом, где возможны расхождения, является способ записи утверждений - как заголовок утверждения отделяется от тела, как разделяются отдельные цели в теле и как обозначаются вопросы к системе. Для этого вполне могут употребляться атомы, отличные от ':-', '.' и '?-', или использоваться более сложные методы. В одной из ранних систем заголовок и цели утверждения размещались одно за другим, причем перед заголовком утверждения ставили знак '+', а перед каждой из подцелей - знак '-'. Короче говоря, вам могут встретиться способы записи утверждений, приведенные ниже, а также и отличные от них.

Uncle(X, Z):- parent(X, Y), brother(Y, Z).

Uncle(x, z) ‹- Parent(x, y) &; Brother(y, z).

UNCLE(_X,_Z):- PARENT(_X,_Y), BROTHER(_Y,_Z).

+UNCLE(*X,*Z) - PARENT(*X,*Y) - BROTHER(*Y,*Z).

((UNCLE X1 ХЗ) (PARENT X1 Х2) (BROTHER X2 ХЗ))

Uncle(X, Z): parent(X, Y); brother(Y, Z).

ТЕРМЫ. Заключение

Объекты данных в Прологе называются термами. Терм может быть константой, переменной или составным термом (структурой). Константами являются целые и действительные числа, например:

    0, - l, 123.4, 0.23E-5, (некоторые реализации Пролога не поддерживают действительные числа).

К константам относятся также атомы, такие, как:

Голди, а, атом, +, :, 'Фред Блогс', [].

Атом есть любая последовательность символов, заключенная в одинарные кавычки. Кавычки опускаются, если и без них атом можно отличить от символов, используемых для обозначения переменных. Приведем еще несколько примеров атомов:

Abcd, фред, ':', Джо.

Полный синтаксис атомов описан ниже.

Как и в других языках программирования, константы обозначают конкретные элементарные объекты, а все другие типы данных в Прологе составлены из сочетаний констант и переменных.

Имена переменных начинаются с заглавных букв или с символа подчеркивания "_". Примеры переменных:

X, Переменная, _3, _переменная.

Если переменная используется только один раз, необязательно называть ее. Она может быть записана как анонимная переменная, состоящая из одного символа подчеркивания "_". Переменные, подобно атомам, являются элементарными объектами языка Пролог.

Завершает список синтаксических единиц сложный терм, или структура. Все, что не может быть отнесено к переменной или константе, называется сложным термом. Следовательно, сложный терм состоит из констант и переменных.

Теперь перейдем к более детальному описанию термов.

КОНСТАНТЫ

Константы известны всем программистам. В Прологе константа может быть атомом или числом.

ATOM язык prolog синтаксис

Атом представляет собой произвольную последовательность символов, заключенную в одинарные кавычки. Одинарный символ кавычки, встречающийся внутри атома, записывается дважды. Когда атом выводится на печать, внешние символы кавычек обычно не печатаются. Существует несколько исключений, когда атомы необязательно записывать в кавычках. Вот эти исключения:

    1) атом, состоящий только из чисел, букв и символа подчеркивания и начинающийся со строчной буквы; 2) атом, состоящий целиком из специальных символов. К специальным символам относятся:

+ - * / ^ = : ; ? @ $ &;

Заметим, что атом, начинающийся с /*, будет воспринят как начало комментария, если он не заключен в одинарные кавычки.

Как правило, в программах на Прологе используются атомы без кавычек.

Атом, который необязательно заключать в кавычки, может быть записан и в кавычках. Запись с внешними кавычками и без них определяет один и тот же атом.

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

Похожие статьи




Синтаксис языка Prolog - Prolog. Синтаксис языка Prolog

Предыдущая | Следующая