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

(1)        Симв - точка, тогда все сделано.

(2)        Симв - пробел, - игнорировать его и читпредложение от остального ввода.

(3)        Симв - буква, - сначала считать слово Слово, которое начинается с Симв, а затем запустить читпредложение, чтобы считать оставшуюся часть предложения, породив при этом Списслов. Общим результатом этого будет список [Слово | Списслов].

Процедура, считывающая символы одного слова, такова:

        читбуквы( Буква, Буквы, Сделсимв)

Ее три аргумента:

(1)        Буква - текущая буква (уже считанная) читаемого слова.

(2)        Буквы - список букв (начинающийся с буквы Буква), оставшихся до конца слова.

(3)        Следсимв - входной символ, непосредственно следующий за читаемым словом. Следсимв не должен быть буквой.

Мы завершим данный пример замечанием о возможном применения процедуры читпредложение. Ее можно использовать в программе обработки текста на естественном языке. Предложения, представленные в виде списков слов, имеют удобную форму для дальнейшей обработки при помощи Пролога. В простейшем

/*

Процедура читпредложение считывает предложение и из его слов создает список атомов. Например,

        читпредложение( Списслов)

порождает

        Списслов=['Мэри', было, приятно, видеть, неудачу, робота]

если входным было предложение

        Мэри было приятно видеть неудачу робота.

*/

        читпредложение( Списслов) :-

                gеt0( Симв),

                читостальное( Симв, Списслов).

        читостальное( 46, [ ]) :-  !.

                                    % Конец предложения: 46 = ASCII-код для ' '

        читостальное( 32, Списслов) :-  !,

                                    % 32 = ASCII-код для пробела

        читпредложение( Списслов).

                                    % Пропустить пробел

        читостальное( Буква, [Слово | Списслов]) :-

                читбуквы( Буква, Буквы, Следсимв),

                                    % Считать буквы текущего слова

                nаmе( Слово, Буквы),

                читостальное( Следсимв, Списслов).

        читбуквы( 46, [ ], 46) :-   !.

                                    % Конец слова: 46 = точка

        читбуквы( 32, [ ], 32) :-

Вы читаете Prolog
Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

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

Отметить Добавить цитату