Название: Базы знаний интеллектуальных систем - Гаврилова Т.А.

Жанр: Информатика

Рейтинг:

Просмотров: 1254


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

• каждому концепту из левой части BNF-определения поставим в соответствие имя фрейма-прототипа;

• альтернативам из правой части BNF-определения при этом должны соответствовать имена слотов этого фрейма;

• для концептов-нетерминалов соответствующий слот должен иметь тип frame;

• для концептов-терминалов соответствующие слоты будут, как правило, иметь типы numb или string,

• рекурсия в BNF-определениях заменяется итерацией, а соответствующие слоты становятся множественными.

Применение сформулированных выше правил к BNF-определениям языка HTML приводит нас к следующему множеству фреймов-прототипов:

 

[htmlis_aprototype,                            if_added HTML ();

HEADframe, restr_by head;

BODYframe, restr_by body ];

[headis_aprototype, if_added HEAD ();

BODYjframe}, restr_by one_of {title, ...} ];

[title is_aprototype, if_added TITLE ();

 BODYstring ];

……………………………………………………………………………

 [bodyis_aprototype, if_added BODY ();

SENT{frame}, restr_by one_of {header, paragraph, list, ...} ];

[header is_aprototype;

BODYframe, restr_by text];

[hi is_aheader,if_added H1()];...[h6 is_aheader, if_added H6()];

[paragraph is_aprototype, if_added PARAGRAPH ();

BODYframe, restr_by text ];

[listis_aprototype;

ATOM{frame}, if_added LI () ];

……………………………………………………………………….

[textis_aprototype;

ATOM{f rame}, restr_by one_of {br, hr, image, anchor,..., line}

[br is_aprototype; if_added BR () ];

 [hr is_aprototype; if_added HR () ];

[image is_aprototype; if_added IMG ();

SRC frame, restr_by link ];

[anchor is_aprototype;

BODYframe, restr_by text ];

…………………………………………………………………..

 [linkis_aprototype;

URL frame, restr_by one_of {http, ftp, ..,} ];

MAILframe, restr_by mail ];

[url is_alink;

without_slot MAIL];

[httpis_aurl,if_added HTTP ();

SERVER string;

DIR {string};

FILEstring ];

[ftp is_aurl, if_added FTP ();

SERVER string;

DIR {string};

FILEstring ];

……………………………………………………………………….

 

Теперь, в соответствии с приведенными фреймами-прототипами и синтаксическими диаграммами, можно специфицировать процедурную часть конвертора как систему демонов, присоединенных к фреймам и/или их слотам. Для примера ниже приводится спецификация одного из таких демонов на языке Java [Нортон и др., 1998]:

 

public class HTML extends FramePrototype {

HEAD head = null;

BODY body = null;

………………………….

String keyword;

 

public void HTML (String name)

{ super (name);

keyword = getToken ();

if (keyword.compareTo ("") == 0) {

head = new HEAD (getNewName ());

body = new BODY (getNewName ());

};

keyword = getToken ();

if (keyword.compareTo ("") == 0) return;

                }

…………………………………………………………………….

}

 

По существу, такой демон не что иное, как конструктор класса HTML, а запуск конвертора осуществляется с помощью оператора создания нового объекта этого класса:

 

HTML currPage = new HTML (get_new_name ());

 

При этом будут рекурсивно вызываться конструкторы других классов (на верхнем уровне это HEAD и BODY), что, в конечном счете, приведет к построению множества фреймов-экземпляров, представляющих анализируемую HTML-страницу (currPage).


Оцените книгу: 1 2 3 4 5