- •Вопрос 1
- •Определение 1.3. Цепочка, которая не содержит ни одного символа, называется пустой цепочкой и обозначается .
- •Определение 1.13. Цепочка , для которой существует вывод s*, называется сентенциальной формой или сентенцией в грамматике .
- •Вопрос 2
- •Вопрос 3
- •Расширение допускает единственное -правило вида s, но в этом случае начальный символ грамматики s не должен встречаться в правых частях правил.
- •Вопрос 4
- •3.1.2 Дерево разбора
- •Вопрос 5
- •Вопрос 6
- •Вопрос 7
- •Вопрос 8
- •Существуют следующие три способа представления функции переходов.
- •Вопрос 9 Алгоритм 2.4. Построение ка по регулярной грамматике.
- •Выход: ка .
- •Вопрос 10
- •Алгоритм 2.1. Преобразование нка в дка.
- •Вопрос 11
- •Алгоритм 2.2. Устранение недостижимых состояний ка.
- •Алгоритм 2.3. Объединение эквивалентных состояний ка.
- •Вопрос12
- •3.2.1 Проверка существования языка грамматики
- •3.2.2 Удаление бесполезных символов грамматики
- •Алгоритм 3.2. Устранение нетерминалов, не порождающих терминальных строк. Вход: кс-грамматика .
- •Алгоритм 3.3. Устранение недостижимых символов грамматики. Вход: кс-грамматика .
- •Определим множество достижимых символов z грамматики g, т.Е. Множество:
- •Вопрос13
- •3.2.3 Устранение -правил грамматики Алгоритм 3.4. Устранение -правил. Вход: кс-грамматика .
- •3.2.4 Устранение цепных правил Алгоритм 3.5. Устранение цепных правил. Вход: кс-грамматика .
- •Вопрос 14 Алгоритм 3.6. Устранение левой факторизации правил. Вход: кс-грамматика .
- •Алгоритм 3.7. Устранение прямой левой рекурсии. Вход: кс-грамматика .
- •Вопрос 15
- •Вопрос 16 Алгоритм 3.9. Построение мп-автомата по кс-грамматике.
- •Вопрос 17
- •Вопрос 18
- •18. 3.4.1 Рекурсивный спуск
- •Теорема 3.1. Достаточные условия применимости метода рекурсивного спуска.
- •Вопрос 19
- •Вопрос 20
- •Вопрос 21
- •21. Функционирование распознавателя цепочек для ll(1)-грамматик.
- •Вопрос 22
- •Вопрос 23 Алгоритм 3.16. Построение множеств l(a) и r(a).
- •Вопрос 24
- •Вопрос 26
- •Вопрос 27
- •Вопрос28
- •Вопрос 29
- •Вопрос 30
- •Вопрос 31
- •Вопрос 32. Определение 4.1. Транслятор – это программа, которая переводит входную программу на исходном (входном) языке в эквивалентную ей выходную программу на результирующем (выходном) языке.
- •Вопрос 33 Общая схема работы компилятора
- •Вопрос 34 ЛекАнализ программы
- •Вопрос 35
- •Вопрос 36
- •Вопрос 37
- •Вопрос 38
- •Вопрос 39
- •Вопрос 40
- •Вопрос 41 Свертка объектного кода программы.
- •Вопрос 42
- •Вопрос 43
- •Вопрос 44
- •Вопрос 45 Схемы компиляции
- •Вопрос 46
- •Вопрос 47
- •Вопрос 48
- •Вопрос 49
- •Вопрос 50
Вопрос 10
Преобразование конечного автомата к детерминированному виду
В теории КА доказано, что для любого НКА существует ДКА, принимающий тот же регулярный язык. Рассмотрим этот алгоритм.
Алгоритм 2.1. Преобразование нка в дка.
Вход: НКА .
Выход: ДКА
.
Шаг 1. Пометить
первый столбец таблицы переходов
ДКА начальным состоянием (множеством
начальных состояний) НКА M.
Шаг 2. Заполняем
очередной столбец таблицы переходов
,
помеченный символами множества
,
для этого определяем те состояния
,
которые могут быть достигнуты из каждого
символа строки
при каждом входном символе
.
Поместить каждое найденное множество
(в том числе
)
в соответствующие позиции столбца
таблицы
,
т.е.:
для некоторого
}
Шаг 3. Для каждого нового множества (кроме ), полученного в столбце таблицы переходов , добавить новый столбец в таблицу, помеченный .
Шаг 4. Если в таблице переходов КА есть столбец с незаполненными позициями, то перейти к шагу 2.
Шаг 5. Во множество
ДКА
включить каждое множество, помечающее
столбец таблицы переходов
и содержащее
НКА
.
Шаг 6. Составить таблицу новых обозначений множеств состояний и определить ДКА в этих обозначениях.
Конец алгоритма.
Пример 2.3. Дан
НКА
,
где Q
= {S,
A,
B,
N},
T
= {a,
b},
H
= {S},
Z
= {N}
и функция переходов задана таблицей
2.2.
Таблица 2.2 – Функция
переходов автомата
F |
S |
A |
B |
N |
a |
A, B |
A |
N |
|
b |
|
N |
B |
|
Граф исходного НКА М представлен на рисунке 2.1.
Построим по НКА М ДКА М’.
1 Строим таблицу переходов для ДКА М’ (таблица 2.3).
Таблица 2.3 – Построение функции переходов для ДКА М’
Шаг |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
F |
S |
A, B |
A, N |
B, N |
A |
N |
B |
a |
A, B |
A, N |
A |
N |
A |
|
N |
b |
|
B, N |
N |
B |
N |
|
B |
2 Во множество
заключительных состояний автомата M’
включим элементы
.
3 Введем следующие новые обозначения состояний автомата M’: (A, B)=С, (A, N)=D, (B, N)=E.
4 Искомый ДКА
определяется следующей пятеркой
объектов:
,
,
функция переходов задана таблицей 2.4,
,
.
Таблица 2.4 – Функция переходов для ДКА M’
F’ |
S |
A |
B |
С |
D |
E |
N |
a |
C |
A |
N |
D |
A |
N |
|
b |
|
N |
B |
E |
N |
B |
|
Вопрос 11
Минимизация конечного автомата
Конечный автомат может содержать лишние состояния двух типов: недостижимые и эквивалентные состояния.
Определение 2.9. Два различных состояния q и q’ в конечном автомате называются n-эквивалентными, nN{0}, если, находясь в одном их этих состояний и получив на вход любую цепочку символов : T*, ||n, автомат может перейти в одно и то же множество конечных состояний.
Определение 2.10. Состояние q КА называется недостижимым, если к нему нет пути из начального состояния автомата.
Определение 2.11. КА, не содержащий недостижимых и эквивалентных состояний, называется приведенным или минимальным КА.
