ХLog – язык обработки HTML- и XML-документов
9
Program
MineText
Rule
// Правило 1.
~(‘C:\XLog\tmpl.xml’, $$X1,$$X2,$$X3) :-
// в $$Y1 список предложений из первого столбца.
Split.str=$$X1.delim=’.’.$$Y1 =val, ~.$$Y1,
//в $$Y2 список предложений из второго столбца..
Split.str=$$X2.delim=’.’.$$Y2 =val,~.$$Y2,
//в $$Y3 список предложений из третьего столбца..
Split.str=$$X3.delim=’.’.$$Y3 =val, ~.$$Y3;
// Правило 2. Выделение предложений и их анализ.
~(<$$X1|$$X2>) :- ~.<sAnl, $$X1>, ~.$$X2;
// Правило 3. Обнаружение конца списка предложений.
~(<>) :-!;
// Правило 4. Преобразование предложения в список слов и проверка,
является ли предложение атрибутивным.
~(<sAnl,
$$X>,
$$X):-
Split.str=$$X.delim=’
’.$$Y=val,
~.<AtrSnt,$$Y>;
// Правило 5. Проверка, является ли предложение двухсоставным.
~(<sAnl, $$X>, $$X):- Split.str=$$X.delim=’ ’.$$Y=val,
~.<TowPartSnt,$$Y>;
// Правило 6.
~(<AtrSnt,<$$Y1,$$Y2>>):-
nWord.str=$$Y1.case=’nominative’,aWord.$$Y2,
print.”атрибутивное предложение”;
// Правило 7.
~(<AtrSnt,<$$Y1,$$Y2,$$Y3>>):-
nWord.str=$$Y1.case=’nominative’,
aWord.$$Y2, nWord.str=$$Y3.case=’nominative’,
print.”атрибутивное предложение”;
// Правило 8.
~(<TowPartSnt, <$$Y1,$$Y2>>) :-nWord.str = $$Y1.case =’ nominative’,
vWord.$$Y2, print.” простое двухсоставное предложение”;
// Правило 9.
~(<TowPartSnt,<$$Y1,$$Y2,$$Y3,$$Y4 >>):-
nWord.str=$$Y1.case=’nominative’, aWord.$$Y2,
Preposition.$$Y3, nWord.str=$$Y4.case=’accusative’,
print.’двухсоставные предложения’;
Goal
~.
”;
end
Исходный код программы имеет небольшой объем (девять пра-
вил). Правила определяют термины, хорошо знакомые лингвистам.