Принцип работы системы нисходящего грамматического разбора

Система нисходящего грамматического разбора, такая как "объект" или "объект2", начинает работу с принятия некоторой гипотезы, а затем проверяет верность следствий этой гипотезы по данным, содержащимся во входном списке. Первоначальной гипотезой может, скажем, служить предположение о том, что во входном списке можно обнаружить нетерминал "предложение". В соответствии с грамматическим правилом для нетерминала "предложение" данная гипотеза разбивается на две субгипотезы — на предположения о том, что во входном списке содержатся "группа_существительного" и "глагольная_группа". Эти две гипотезы, в свою очередь, разбиваются на субгипотезы более низкого уровня. Процесс разделения гипотез на субгипотезы продолжится до тех пор, пока система не встретит терминал. В этом случае она попытается установить факт наличия терминала в начальной позиции входного списка. Иерархия терминалов и нетерминалов, подразумеваемая грамматикой процедуры "объект2", показана на рис. 5. 2.

5. 3. Система восходящего грамматического разбора Принцип работы системы восходящего грамматического разбора

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

Существует несколько стратегий восходящего грамматического разбора. Здесь рассматривается система восходящего разбора "восх_объект". Она начинает работу со считывания слова из входного списка. Далее по словарю выясняется, каким типом терминала является это слово. Затем система просматривает грамматические правила, определяющие нетерминалы, чтобы определить, начинаются ли какие-либо из этих правил с только что распознанного терминала.

Предположим, что грамматика процедуры "восх_объект" состоит из тех же трех правил:

предложение -> группа_существительного глагольная_группа

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

глагольная_группа -> глагол группа_существительного

Сперва система разбора ищет "артикль" в начале входного списка слов Она отыскивает правило, первой компонентой которого является "артикль", и находит "группу_существительного". Затем система пытается найти все оставшиеся компоненты "группы_существительного"; В данном случае имеется только одна компонента — "существительное". Если система обнаружит, что следующий терминал во входном списке — это "существительное", то она успешно идентифицирует "группу_существительного". Затем система перейдет к поиску другого объекта, первой компонентой которого является "группа_существительного". Однако если следующим терминалом, который она обнаружит, не будет "существительное", то она отвергнет гипотезу о том, что слова, расположенные в начале входного списка, образуют "группу—существительного". Система вернется назад и приступит к поиску другого грамматического правила, первой компонентой которого является "артикль".

Система грамматического разбора продолжит поиск этим способом нетерминалов все более высокого уровня. Поиск будет длиться до тех пор, пока система не достигнет некоторого целевого нетерминала (такого как "предложение"). В этой точке она остановится. Если бы целевой нетерминал отсутствовал, то система разбора действовала бы до бесконечности.

Соседние файлы в папке Гл.0,1,2,3,4,5,Предисловие