- •5.3 Задачи к главе 5 56
- •6.4 Задачи к главе 6 67
- •7.5 Задачи к главе 7 85
- •1 Элементы теории множеств и отношений
- •1.1 Условные обозначения, принятые в тексте
- •1.2 Множества. Способы задания множеств
- •1.3 Операции над множествами
- •1.4 Действия с цепочками
- •1.5 Число элементов множества
- •Решение
- •1.6 Отношения
- •Решение
- •1.7 Свойства бинарных отношений
- •1.8 Операции с бинарными отношениями
- •1.9 Упражнения и задачи к главе 1
- •2 Элементы алгебры логики
- •2.1 Простые высказывания; логические связки
- •2.2 Составные высказывания. Таблицы истинности
- •2.3 Логические законы
- •2.4 Построение заданных составных высказываний
- •2.5 Отношения между высказываниями
- •2.6 Аргументы
- •2.7 Задачи на построение таблиц истинности
- •3 Элементы теории графов
- •3.1 Общие понятия и определения
- •3.2 Способы задания графов
- •3.3 Элементы графов
- •3.4 Операции с частями графа
- •3.5 Диаметр, радиус и центр графа
- •3.6 Диаметр протяженности, радиус протяженности и центр протяженности графа
- •3.7 Задачи к главе 3
- •4 Теория конечных автоматов
- •4.1 Конечные автоматы – распознаватели
- •4.2 Эквивалентные состояния ка
- •4.3 Недостижимые состояния ка
- •4.4 Недетерминированный конечный автомат
- •4.5 Задачи к главе 4
- •5 Автоматы с магазинной памятью
- •5.1 Автоматы-распознаватели с магазинной памятью
- •5.2 Автоматы–трансляторы с магазинной памятью
- •Параметры мп-транслятора:
- •5.3 Задачи к главе 5
- •6 Грамматики
- •6.1 Общие сведения
- •6.2 Классификация грамматик
- •6.3 Эквивалентные преобразования грамматик
- •6.3 1 Удаление или добавление бесполезных (непродуктивных и недостижимых) нетерминалов
- •Решение
- •6.3.2 Добавление нетерминала
- •6.3.3 Подстановка правил
- •6.3.4 Изменение направления рекурсии
- •6.4 Задачи к главе 6
- •7 Распознаватели для грамматик
- •7.1 Построение ка–распознавателей для автоматных
- •Решение
- •7.2 Построение ка–распознавателей для праволинейных грамматик
- •7.3 Построение мп–распознавателей для s – грамматик
- •7.4 Построение мп–распознавателей для q – грамматик
- •7.5 Задачи к главе 7
7.2 Построение ка–распознавателей для праволинейных грамматик
Праволинейной называется такая контекстно–свободная грамматика(КС–грамматика), в правых частях правил которой имеется не более одного нетерминала и этот нетерминал заканчивает правило.
Примечание. В множестве правил праволинейных грамматик допускаются эпсилон–правила (правила вида X т.е. нетерминал преобразуется в пустую цепочку).
Праволинейную грамматику всегда можно преобразовать в автоматную, для которой построение КА–распознавателя рассмотрено в предыдущем разделе. Алгоритм преобразования правил следующий:
а) преобразовать правила вида A xyzB, где xyz – цепочка терминалов произвольной длины (в данном случае | xyz | = 3 ); вводят дополнительные нетерминалы по следующему принципу:
A
x<yzB>; <yzB>
y<zB>; <zB>
zB (в угловых
скобках записаны цепочки, для обозначения
которых вводят новые нетерминалы). Таким
образом происходит замена исходного
правила несколькими, которые соответствуют
правилам автоматной грамматики. В нашем
случае:
A xM
A xyzB M yN
N zB
б) преобразовать правила вида A xyz, где xyz – цепочка терминалов произвольной длины (в данном случае | xyz | = 3 ); вводится дополнительный нетерминал F, который в КА–распознавателе будет служить финишным состоянием (подробнее см. разд. 7.1), а в преобразованной грамматике добавляется правило F .
A xyzF ( преобразование см. п. а)
A xyz
F
В результате таких преобразований получим автоматную грамматику, эквивалентную исходной праволинейной. Как строить для автоматной грамматики КА–распознаватель описано в разделе 7.1.
Примечания:
1 При построении таблицы переходов в последнем столбце ставить "Доп." для всех состояний КА–распознавателя, для которых в полученной грамматике есть эпсилон-правила.
2 Полученный КА–распознаватель обязательно проверить на достижимость и эквивалентность состояний; при необходимости выполнить процедуру преобразования в минимальный КА (переименование состояний не изменит множества распознаваемых цепочек).
7.3 Построение мп–распознавателей для s – грамматик
КС–грамматика (2-й тип грамматики) называется S–грамматикой, если правые части всех правил этой грамматики начинаются с терминальных символов и для правил с одинаковыми левыми частями правые части начинаются с различных терминалов.
Правила имеют вид Х y , где y – терминал; – любая цепочка терминалов и нетерминалов, возможно пустая (S-грамматика не содержит эпсилон–правил).
Для S–грамматики существует формальная процедура построения МП–распознавателя с одним состоянием S по следующему алгоритму:
1 Входной алфавит МП–распознавателя V = {VT,--|}.
2 Множество магазинных символов { VN, VT1, #}, где VT1 – то подмножество терминальных символов грамматики, которые встречаются в цепочках правил Р.
3 Начальная конфигурация МП–распознавателя – в магазине находится начальный символ грамматики (например для грамматики G[Z] – Z #).
Примечание. Условимся запись содержимого магазина вести так, чтобы верхний символ магазина (тот символ, с которым работает МП–распознаватель) занимал самую левую позицию.
4.Управляющая таблица строится так: столбцы таблицы – символы входного алфавита (последний символ –|); строки таблицы – магазинные символы. Заполнение управляющей таблицы:
а) для правил грамматики вида Х y ( – непустая цепочка терминалов и нетерминалов; y – терминал) клетка управляющей таблицы заполняется в соответствии с рис. а (см. ниже);
б) для правил грамматики вида Х y клетка управляющей таблицы заполняется в соответствии с рис. б (см. ниже).
В соответствии с пп. а и б обрабатывается все множество Р правил грамматики;
в
)
клетка таблицы на пересечении терминал
– магазинный символ и тот же терминал
– входной алфавит заполняется
в соответствии с рис. в
(см. ниже).
г) все клетки последнего столбца таблицы (–|) заполняются "Отв." кроме клетки на пересечении со строкой #, в которой ставится "Доп.".
д) оставшиеся незаполненными клетки управляющей таблицы заполняются символом Е(error) – "состояние ошибки".
Пример: Задана грамматика G[S] = (VT = {a,b};
VN = {S,R}; S; P), где P = { S abR (1);S bRbS (2);R a (3);
R bR (4) }.
Построить МП–распознаватель для языка, порождаемого этой грамматикой.
Решение
1 Выполним проверку нетерминалов грамматики на достижимость и продуктивность: S достижим (начальный символ); R достижим (правило (1)); R продуктивен (правило (3)); S продуктивен (правило (1)).
2 Построим МП–распознаватель (по виду правил делаем вывод, что это S–грамматика):
– входной алфавит V={a,b,–|};
множество магазинных символов {S,R,b,#};
начальное содержимое магазина S,#;
управляющая таблица имеет вид (см. след.стр.);
3 Проверим работу МП–распознавателя.
Получим контрольную цепочку на основании правил грамматики:
2 1 4 3 3 (номера правил)
S bRbS bRbabR bRbabbR bRbabba bababba
Примечание.
Поля для состояний в управляющей таблице
осталось незаполненным, т.к. состояние
только одно и заполнять его нет смысла.
Работу МП–распознавателя по разбору цепочки bababba представим в виде таблицы:
Необраб. цепочка |
Обрабат. символ |
Верхний символ магазина |
Содержимое магазина |
Действие с магазином |
bababba–| |
b |
S |
S# |
Зам.RbS |
ababba–| |
a |
R |
RbS# |
Выт.R |
babba–| |
b |
b |
bS# |
Выт.b |
abba–| |
a |
S |
S# |
Зам.bR |
bba–| |
b |
b |
bR# |
Выт.b |
ba–| |
b |
R |
R# |
Зам.R |
a–| |
a |
R |
R# |
Выт.R |
–| |
–| |
# |
# |
Допустить |
Контрольная цепочка распознается построенным МП–распознавателем.
Работу МП–распознавателя можно трактовать так: на каждом шаге процесса обработки цепочки магазин представляет следующее утверждение о цепочке необработанных символов (включая текущий):
"вся цепочка будет допущена тогда и только тогда, когда оставшаяся необработанной цепочка входных символов выводима из цепочки символов, находящихся в магазине".
