Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Восходящие распознаватели языков



Грамматики предшествования

Грамматики простого предшествования

Определение грамматики простого предшествования

Определение Приведенная КС-грамматика G (VN, VT, P, S) называется грамматикой простого предшествования, если выполняются следующие условия.

1) Для каждой упорядоченной пары терминальных и нетерминальных символов выполняется не более чем одно из трех отношений предшествования:

а) Bi Bj (" Bi, Bj Î V), если и только если существует правило A®xBiBjy Î P, где x, y Î V*;

б) Bi < × Bj (" Bi, Bj Î V), если и только если существует правило A®xBiDy Î P и вывод DÞ *Bjz, где A, D Î VN, x, y, z Î V*;

в) Bi × > Bj (" Bi, Bj Î V), если и только если существует правило A®xCBjy и вывод СÞ *zBi или существует правило A®xCDy Î P и вывод СÞ *zBi и DÞ *Bjw, где A, C, D Î VN, x, y, z, w Î V*.

2) Различные правила в грамматике имеют разные правые части.

Определение Отношения =×, < ×, × > называют отношениями простого предшествования для символов грамматики.

В основе распознавателя для грамматик простого предшествования лежит правосторонний разбор строки языка. Исходной сентенциальной формой является заданная строка языка, а целевой – начальный символ грамматики. На каждом шаге разбора в исходной цепочке символов пытаются выделить подцепочку, совпадающую с правой частью некоторого правила вывода грамматики, и заменить ее нетерминалом, стоящим в левой части этого правила. Данная операция называется сверткой к нетерминалу, а заменяемая подстрока – основой сентенции. Описанный процесс разбора соответствует построению дерева вывода цепочки снизу вверх (от листьев к корню).

Метод предшествования основан на том факте, что отношения между двумя соседними символами распознаваемой строки соответствуют трем следующим вариантам:

- Bi =× Bi+1, если символы Bi и Bi+1 принадлежат основе;

- Bi < × Bi+1, если Bi+1 – крайний левый символ некоторой основы;

- Bi × > Bi+1, если Bi – крайний правый символ некоторой основы.

 

Поиск основы сентенции грамматики

Если грамматика является грамматикой простого предшествования, то для поиска основы каждой ее сентенции надо просматривать элементы сентенции слева направо и найти самую левую пару символов xj и xj+1, такую что xj× > xj+1. Окончанием основы сентенции будет xj.Далее просматривать элементы сентенции справа налево, начиная с символа xj до тех пор, пока не будет найдена самая правая пара символов xi-1 и xi, такая что xi-1 < × xi. Заголовком основы будет символ xi. Таким образом, будет найдена основа сентенции, имеющая вид xi xi+1…xj-1 xj. Схема поиска основы сентенции грамматики представлена на рисунке 3.4.

 

 
 

 


x1 x2 xi-1 xi xi+1 xj-1 xj xj+1 xn

< × … < × =× … =× × > × >

 

Рисунок 3.4 – Схема поиска основы сентенции грамматики

 

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

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

- L(A) = {X | $ AÞ *Xz}, AÎ VN, XÎ V, zÎ V* - множество крайних левых символов относительно нетерминального символа А;

- R(A) = {X | $ AÞ *zX}, AÎ VN, XÎ V, zÎ V* - множество крайних правых символов относительно нетерминального символа А.

 

Определение Отношения предшествования можно определить с помощью введенных множеств следующим образом:

 

- BiBj (" Bi, Bj Î V), если и только если существует правило A®xBiBjy Î P, где AÎ VN, x, y Î V*;

- Bi < × Bj (" Bi, Bj Î V), если и только если существует правило A®xBiDyÎ P и Bj Î L(D), где A, D Î VN, x, y Î V*;

- Bi × > Bj (" Bi, Bj Î V), если и только если существует правило A®xCBjy и Bi Î R(C) или существует правило A®xCDy Î P и Bi Î R(C), BjÎ L(D), где A, C, D Î VN, x, y Î V*.

Матрицу предшествования дополняют символами ^н и ^к (начало и конец цепочки). Для них определены следующие отношения предшествования:

- ^н < × X, " X Î V, если X Î L(S);

- ^к × > X, " X Î V, если X Î R(S).

 

3.5.1.1.3 Построение множеств L(A) и R(A)

Шаг 1. Для каждого нетерминального символа А ищем все правила, содержание А в левой части. Во множество L(A) включаем самый левый символ из правой части правил, а во множество R(A) – самый крайний правый символ из правой части, т.е.

" A Î VN: L0(A) = {X | A®Xy, X Î V, y Î V*},

R0(A) = {X | A®yX, X Î V, y Î V*}.

Шаг 2. Для каждого нетерминального символа А: если множество L(A) содержит нетерминальные символы грамматики А¢ , , …, то множество L(A) надо дополнить символами, входящими в соответствующие множества L(А¢ ), L() и т.д., … и не входящими в L(A). Аналогичную операцию выполнить для множеств R(A), т.е.

" A Î VN: Li(A) = Li-1(ALi-1(B), " B Î (Li-1(A VN),

Ri(A) = Ri-1(ARi-1(B), " B Î (Ri-1(A VN).

Шаг 3.Если на предыдущем шаге хотя бы одно множество L(A) или R(A) для некоторого символа грамматики изменилось, то вернуться к шагу 2, иначе построение закончено. Т.е. если существует AÎ VN: Ri(ARi-1(A) или Li(ALi-1(A), то положить i: =i+1 и вернуться к шагу 2, иначе построение закончено и R(A) = Ri(A) и L(A) = Li(A).

 


Поделиться:



Популярное:

Последнее изменение этой страницы: 2016-04-11; Просмотров: 937; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.018 с.)
Главная | Случайная страница | Обратная связь