- •Донбасский институт техники и менеджмента международного научно-технического университета
- •Тема №1. Теория множеств. План.
- •1.1 Условные обозначения, принятые в конспекте лекций
- •1.2 Множества. Способы задания множеств
- •1.3 Операции над множествами
- •1.4 Действия с цепочками
- •1.5 Число элементов множества
- •2.2.Свойства бинарных отношений
- •2.3.Операции с бинарными отношениями
- •Тема №3. Элементы алгебры логики. План
- •3.1 Простые высказывания; логические связки
- •3.5 Отношения между высказываниями
- •3.6 Аргументы
- •Тема №4. Элементы теории графов План
- •4.1 Общие понятия и определения
- •4.2 Способы задания графов
- •4.3 Элементы графов
- •4.4 Операции с частями графа
- •4.5 Диаметр, радиус и центр графа
- •4.6 Параметры протяженности (диаметр, радиус и центр) графа
- •5.1 Конечные автоматы - распознаватели
- •5.2 Эквивалентность состояний ка
- •5.3 Недостижимые состояния
- •5.4 Недетерминированный конечный автомат
- •6.1 Автоматы-распознаватели с магазинной памятью
- •6.2 Автоматы-трансляторы с магазинной памятью
- •6.3 Задачи на построение мп-распознавателей.
- •6.4 Задачи на построение мп-трансляторов
- •Тема № 7. Грамматики План
- •7.1 Общие сведения
- •7.2 Классификация грамматик
- •7.3 Эквивалентные преобразования кс-грамматик
- •7.3.1 Удаление или добавление бесполезных (непродуктивных и не-
- •7.3.2 Добавление нетерминала
- •7.3.3 Подстановка правил
- •7.3.4 Изменение направления рекурсии
- •8.1 Построение ка для распознания автоматных грамматик
- •3.2 Построение ка-распознавателей для праволинейных грамматик
- •8.4 Построение мп-распознавателей для q-грамматик
7.2 Классификация грамматик
Общепринятой классификацией грамматик и порождаемых ими языков является иерархия Хомского, содержащая четыре типа грамматик:
г==========================================================¬
¦ 0-тип - грамматики с фразовой структурой. ¦
¦ x -> y; x и y - любые цепочки терминалов и нетерм. ¦
¦ ---------------------------------------------------------¦
¦ ¦ 1-тип - контекстно-зависимые грамматики ¦
¦ ¦ x -> y; ¦x¦ <=¦y¦ (правая цепочка не короче левой);¦
¦ ¦ -------------------------------------------------------¦
¦ ¦ ¦ 2-тип - контекстно-свободные грамматики ¦
¦ ¦ ¦ A -> y; A - нетерминал, y - любая цепочка; ¦
¦ ¦ ¦ -----------------------------------------------------¦
¦ ¦ ¦ ¦ 3-тип - автоматные грамматики ¦
¦ ¦ ¦ ¦ A -> aB A => b; a,b-терминалы; A,B - нетерминалы ¦
L==========================================================-
Каждый тип грамматик включает грамматики более высоких типов,
как частные случаи.
7.3 Эквивалентные преобразования кс-грамматик
Для построения распознавателей грамматик, других целей очень часто необходимо преобразовать правила исходной грамматики к соответствующему виду. При этих преобразованиях язык, порождаемый исодной и полученными после преобразования грамматиками не должен меняться.
Две грамматики эквивалентны если они порождают один и тот же язык (одни и те же цепочки терминальных символов).
Рассмотрим ряд процедур, которые всегда приводят к эквивалентным преобразованиям.
7.3.1 Удаление или добавление бесполезных (непродуктивных и не-
достижимых) нетерминалов
В множестве Р правил грамматики G непродуктивным называют нетерминал из которого нельзя получить цепочку терминалов. Для поиска в множестве правил непродуктивных нетерминалов используется следующее свойство:
Свойство А: Если все символы правой части правила продуктивны, то продуктивен и символ, стоящий в его левой части.
Процедура поиска непродуктивных нетерминалов в множестве правил P грамматики G:
- составить список нетерминалов для которых найдется хотя бы одно правило, правая часть которого состоит только из терминалов;
- если найдется такое правило, что все нетерминалы, стоящие в его правой части уже занесены в список, то добавить в список нетерминал стоящий в его левой части;
- если на предыдущем шаге список не пополняется, то уже получен исчерпывающий список всех продуктивных нетерминалов.
Hетерминалы грамматики не попавшие в список, построенный приведенному выше алгоритму, являются непродуктивными и, не нарушая эквивалентности, из множества правил Р можно удалить все правила, содержащие такие нетерминалы.
В множестве правил недостижимым называют нетерминал, который не может быть получен в процессе вывода. Для поиска недостижимых нетерминалов используется следующее свойство:
Свойство Б: Если нетерминал в левой части правила является достижимым, то достижимы все нетерминалы, стоящие в правой части этого правила.
Процедура поиска недостижимых нетерминалов в множестве правил P грамматики G:
- образовать одноэлементный список из начального нетерминала;
- если найдено правило, левая часть которого уже в списке,
то включить в список все нетерминалы из его правой части;
- если на предыдущем шаге список не пополняется, то уже получен исчерпывающий список всех достижимых нетерминалов.
Hетерминалы грамматики не попавшие в список, построенный по приведенному выше алгоритму, являются недостижимыми и, не нарушая эквивалентности, из множества правил Р можно удалить все правила, содержащие такие нетерминалы.
Hе нарушая эквивалентности,можно также исключить правила такого вида: A -> A
A -> B, B -> C, C -> A (циклический блок правил).
Пример : Задана грамматика G
P = { S -> aS, (1)
S -> aA, (2) VN = { S, A, B, C, D };
A -> bB, (3) VT = { a, b, c, d };
A -> bC, (4)
B -> d, (5) Начальный символ - S.
D -> c (6) };
Упростить исходную грамматику G.
Решение
1. Поиск непродуктивных нетерминалов :
Используя правила (5) и (6), заносим в список продуктивных нетерминалы B, D. Затем по правилу (3) - A, затем по правилу (2)
- S, далее список не пополняется. Получен полный список продуктивных нетерминалов - { B, D, A, S}. Hепродуктивный символ С (правило (4) можно исключить).
2. Поиск недостижимых нетерминалов :
Первым в список вносим начальный символ грамматики S, затемна основании правила (2) дополняем список нетерминалом A; правило(3) дает основания внести в список нетерминал В. Дальнейшие действия в соответствии с алгоритмом список нетерминалов не пополняют. Полученный список выглядит так {S,A,B}.
Hедостижимый нетерминал D. Правило (6) из множества правил грамматики S можно исключить.
В результате этих преобразований получаем эквивалентную грамматику S1: VN = {S, A, B}; VT = {a, b, d}; начальный символ S; P = { S -> aS (1)
S -> aA (2)
A -> bB (3)
B -> d }. (4)
