- •Вопрос 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
Вопрос 8
Конечный автомат – это простейший распознаватель без вспомогательной памяти.
Определение 2.3. Детерминированным конечным автоматом (ДКА) называется пятерка объектов:
,
(2.1)
где
-
конечное множество состояний автомата;
T- конечное множество допустимых входных символов;
F - функция переходов, отображающая множество QT во множество состояний Q;
H - конечное множество начальных состояний автомата;
Z - множество заключительных состояний автомата, Z Q.
Определение 2.4.
Недетерминированным
конечным автоматом (НКА) называется
конечный автомат, в котором в качестве
функции переходов используется
отображение
во множество всех подмножеств множества
состояний автомата
,
т.е. функция переходов неоднозначна,
так как текущей паре
соответствует множество очередных
состояний автомата
.
Существуют следующие три способа представления функции переходов.
Командный способ.
Каждую команду
КА записывают в форме
,
где
.
Табличный способ.
Строки таблицы
переходов соответствуют входным символам
автомата t
T,
а столбцы – состояниям Q.
Ячейки таблицы заполняются новыми
состояниями, соответствующими значению
функции
.
Неопределенным значениям функции
переходов соответствуют пустые ячейки
таблицы.
Графический
способ.
Строится
диаграмма состояний автомата –
неупорядоченный ориентированный
помеченный граф. Вершины графа помечены
именами состояний автомата. Дуга ведет
из состояния
в состояниe
и помечается списком всех символов
t
T,
для которых
.
Вершина, соответствующая входному
состоянию автомата, снабжается стрелкой.
Заключительное состояние на графе
обозначается двумя концентрическими
окружностями.
2.2.2 Распознавание строк конечным автоматом
Определение 2.5. Пара (q, ) QT*, где - текущий остаток входной строки, называется конфигурацией автомата М.
Определение 2.6. Конфигурация (Н, ), где - полная входная строка, называется начальной, а пара (q, ), где q Z, называется заключительной конфигурацией.
Шаг работы автомата можно представить отношением непосредственного следования конфигураций |-. Отношение достижимости конфигураций будем обозначать |-*. Тогда, если F(q, t)=p, где p Q, то можно записать (q, t) |- (p, ) для всех T*. Эта запись означает то, что если автомат находится в состоянии q и входная головка обозревает входной символ t, то автомат может cделать шаг, за который он переходит в состояние p и сдвигает головку на одну ячейку вправо.
Определение 2.7. Автомат М допускает (принимает) строку , если существует путь по конфигурациям (H, ) |-* (q, ) для некоторого q Z.
Определение 2.8. Язык L, принимаемый конечным автоматом М, формально определяется как множество:
L(M) = { | T* и (H, ) |-* (q, ) для некоторого q Z}.
Вопрос 9 Алгоритм 2.4. Построение ка по регулярной грамматике.
Вход: Регулярная грамматика .
Выход: ка .
Шаг 1. Пополнить
грамматику правилом
,
где
и
- новый нетерминал, для каждого правила
вида
,
если в грамматике нет соответствующего
ему правила
,
где
.
Шаг 2. Начальный
символ грамматики
принять за начальное состояние КА
.
Из нетерминалов образовать множество
состояний автомата
,
а из терминалов – множество символов
входного алфавита
.
Шаг 3. Каждое правило
преобразовать в функцию переходов
,
где
.
Шаг 4. Во множество
заключительных состояний включить все
вершины, помеченные символами
из правил вида
,
для которых имеются соответствующие
правила
,
где
.
Шаг 5. Если в
грамматике имеется правило
,
где
- начальный символ грамматики, то
поместить
во множество заключительных состояний.
Шаг 6. Если получен НКА, то преобразовать его в ДКА.
Конец алгоритма.
Пример 2.6. Дана
регулярная грамматика G=({a,
b,
c,
},
{S,
A,
B,
C},
P,
S),
где
.
Построить по регулярной грамматике конечный автомат.
Решение задачи состоит из следующей последовательности действий.
1 Пополним грамматику правилом CN, где N - новый нетерминал.
2 Начальное состояние
конечного автомата
.
Множество состояний автомата
,
множество символов входного алфавита
.
3 Значения сформированной функции переходов даны в таблице 2.8.
Таблица 2.8 – Функция переходов автомата М
F |
S |
A |
B |
C |
N |
a |
A |
A |
|
S |
|
b |
B |
|
B |
|
|
c |
|
C |
C |
C |
|
4 Множество
заключительных состояний
.
5 Для начального
символа грамматики есть -правило,
значит добавляем его во множество
заключительных состояний
.
Конечный автомат М - детерминированный, граф КА представлен на рисунке 2.6.
