Читаем Программирование на языке пролог полностью

Уже было показано, как имя некоторого класса словосочетаний, встретившееся в грамматическом правиле, транслируется в предикат, имеющий два дополнительных аргумента. Таким образом, грамматические правила приводят к множеству предикатов с двумя аргументами. Иногда при написании синтаксических анализаторов, помимо аргументов, служащих для представления обрабатываемой последовательности, могут потребоваться дополнительные аргументы, тем более, что предикаты в Прологе могут иметь произвольное число аргументов. Предлагаемая здесь форма представления грамматических правил обеспечивает такую возможность.

Давайте рассмотрим пример, показывающий, когда такие дополнительные аргументы полезны. Разберем задачу «согласования числа» между подлежащим и сказуемым предложения. Последовательности слов подобные

*The boys eats the apple.

*The boy eat the apple.

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

предложение--› предложение_едч.

предложение--› предложение_мнч.

группа_существительного-- группа_существительного_едч.

группа_существительного--› группа_существительного_мнч.

предложение_едч--› группа_существительного_едч, группа_глагола_едч.

группа_существительного_едч--› определитель_едч, существительное_едч.

группа_глагола_едч--› глагол_едч, группа_существительного.

группа_глагола_едч--› глагол_едч.

определитель_едч--› [the].

существительное_едч--› [boy].

глагол_едч--› [eats].

Аналогичное множество правил можно написать и на случай множественного числа. Такой способ согласования числа не очень изящен и скрывает тот факт, что структура предложений для единственного и множественного числа во многом совпадает. Более удачный способ состоит в том, чтобы связать с классами словосочетаний дополнительный аргумент, указывающий на использование единственного или множественного числа. Так предложение(едч)обозначает словосочетание предложение,употребленное в форме единственного числа. В общем случае, предложение (X)обозначает предложение, форма числа которого равна X. При этом правила согласования числа сводятся к условиям согласованности значений этих аргументов. Форма числа подлежащего в группе существительного должна совпадать с формой числа группы глагола и так далее. Переписав соответствующим образом грамматические правила, получаем:

предложение--› предложение(Х).

предложение(Х)-- группа_существительного(Х), группа _глагола(Х).

группа_существительного(Х)--› определитель(Х), существительное(Х).

группа_глагола(Х)--› глагол(Х).

группа_глагола(X)--› глагол(Х), группа_существительного(Y).

существительное(едч)--› [boy].

существительное(мнч) -› [boys].

определитель(_)--› [the].

глагол(едч)--› [eats].

глагол(мнч)--›[eat].

Обратим внимание на способ, каким можно определить форму числа для the.С этого слова могло бы начинаться словосочетание, употребленное в форме как единственного, так и множественного числа, и поэтому форма числа этого слова может быть сопоставлена с чем угодно. Отметим также, что во втором правиле для предиката группа_глаголаимена переменных выражают факт, что форма числа группы глагола (которая должна быть согласована с формой числа подлежащего) определяется по форме числа глагола, а не по форме числа объекта, если таковой имеется.

Перейти на страницу:
Нет соединения с сервером, попробуйте зайти чуть позже