Скачиваний:
201
Добавлен:
17.06.2016
Размер:
2.69 Mб
Скачать

Многоуровневые составные объекты.

Турбо Пролог позволяет конструировать составные объекты на несколь-

ких уровнях. Например, в:

книга("Гадкий утенок","Андерсен")

вместо использования фамилии автора вы можете использовать новую структу-

ру, которая описывает автора более детально, включая имя и фамилию. Вызы-

вая функтор для нового объекта автор, вы можете изменить описание книги

на:

книга("Гадкий утенок",автор("Ганс Христиан","Андерсен"))

в старом определении домена:

книга(название,автор)

второй аргумент книги является функтором "автор". Но старое определение

автор=symbol

может включать только одно имя, но это уже не имеет значения. Вы можете

теперь определить автора, как составной объект, состоящий из имени и фа-

милии автора. Вы описываете его как:

автор=автор(имя,фамилия)

что приводит к следующим определениям:

domains

articles = book(title,author); ... /* Первый уровень */

author = author(first_name,last_name) /* Второй уровень */

title,first_name,last_name = symbol /* Третий уровень */

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

такое "дерево":

книга

/ \

название автор

/ \

/ \

имя фамилия

Описание домена описывает только один уровень дерева, а не целое де-

рево. Например, книга не может быть описана таким предложением:

книга = книга(название,автор(имя,фамилия))

Пример, иллюстрирующий структуру предложения.

Рассмотрим в качестве еще одного примера составных объектов грамма-

тический разбор структуры предложения :

ellen owns the book. ( У Лены есть книга.)

Наиболее простая структура английского предложения состоит из сущес-

твительного и группы сказуемого:

предложение = предложение(существительное,группа_сказуемого)

существительное - это просто слово

существительное = существительное(слово)

а группа сказуемого состоит из глагола и группы существительного или из

одного глагола.

группа_сказуемого = группа_сказуемого(глагол,существительное);

глагол(слово)

глагол = глагол(слово)

Используя эти определения доменов (предложение, существительное,

сказуемое и глагол), предложение "ellen owns the book." будет записано:

предложение(существительное(ellen),

группа_сказуемого(глагол(owns),существительное(book))).

Соответствующее дерево выглядит так:

предложение

/ \

/ \

/ \

существительное группа_сказуемого

| / \

| глагол существительное

| | |

ellen owns the book

Структура данных наподобие этой может получаться на выходе из прог-

раммы синтаксического разбора, который определяет грамматическую структу-

ру предложения. Разбор не встроен в Турбо Пролог, но мы включили в ваш

пакет программ простой анализатор предложений. (Смотрите приложение: Ана-

лизатор Предложений в Справочном Руководстве по Турбо Прологу).

Соседние файлы в папке Документация