Программирование на языке Пролог для искусственного интеллекта | страница 22
Quintus Prolog User's Guide and Reference Manual. Palo Alto: Quintus Computer System Inc. (1985).
The Arity/Prolog Programming Language. Concord, Massachusetts: Arity Corporation (1986).
Глава 2
Синтаксис и семантика Пролог-программ
В данной главе дается систематическое изложение синтаксиса и семантики основных понятий Пролога, а также вводятся структурные объекты данных. Рассматриваются следующие темы:
• простые объекты данных (атомы, числа, переменные)
• структурные объекты
• сопоставление как основная операция над объектами
• декларативная (или непроцедурная) семантика программ
• взаимосвязь между декларативным и процедурным смыслами программ
• изменение процедурного смысла путем изменения порядка следования предложений и целей
Большая часть этих тем уже была затронута в гл. 1. Теперь их изложение будет более формальным и детализированным.
2.1. Объекты данных
На рис. 2.1 приведена классификация объектов данных Пролога. Пролог-система распознает тип объекта по его синтаксической форме в тексте программы. Это возможно благодаря тому, что синтаксис Пролога предписывает различные формы записи для различных типов объектов данных. В гл. 1 мы уже видели способ, с помощью которого можно отличить атомы от переменных: переменные начинаются с прописной буквы, тогда как атомы — со строчной. Для того, чтобы пролог-система распознала тип объекта, ей не требуется сообщать больше никакой дополнительной информации (такой, например, как объявление типа данных).
Рис. 2.1. Обьекты данных Пролога.
2.1.1. Атомы и числа
В гл. 1 мы уже видели несколько простых примеров атомов и переменных. Вообще же они могут принимать более сложные формы, а именно представлять собой цепочки следующих символов:
• прописные буквы А, В, …, Z
• строчные буквы а, b, …, z
• цифры 0, 1, 2, …, 9
• специальные символы, такие как
+ - * / = : . & _ ~
Атомы можно создавать тремя способами:
(1) из цепочки букв, цифр и символа подчеркивания _, начиная такую цепочку со строчной буквы:
>анна
>nil
>х25
>x_25
>x_25AB
>x_
>x__y
>альфа_бета_процедура
>мисс_Джонс
>сара_джонс
(2) из специальных символов:
><--->
>======>
>...
>.:.
>::=
Пользуясь атомами такой формы, следует соблюдать некоторую осторожность, поскольку часть цепочек специальных символов имеют в Прологе заранее определенный смысл. Примером может служить >:-
.
(3) из цепочки символов, заключенной в одинарные кавычки. Это удобно, если мы хотим, например, иметь атом, начинающийся с прописной буквы. Заключая его в кавычки, мы делаем его отличным от переменной: