- •Вопрос 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
Вопрос 16 Алгоритм 3.9. Построение мп-автомата по кс-грамматике.
Построим МП-автомат, выполняющий левосторонний разбор. Данный автомат обладает только одним состоянием и принимает входную строку опустошением магазина. Стек используется для размещения текущей сентенции, первоначально это начальный символ грамматики. Очередная сентенция получается заменой верхнего нетерминала стека.
Вход: КС-грамматика .
Выход:
МП-автомат
такой, что L(M)
= L(G).
Шаг 1. Положить Q = {q}, q0 = q, Z = , N = VT VN, T = VT, N0 = S.
Шаг
2. Для каждого правила вида (А
)
,
где
сформировать магазинную функцию вида
.
Эти функции предписывают замещать
нетерминал в вершине стека по правилу
грамматики.
Шаг
3. Для каждого t
сформировать магазинную функцию вида
,
которая выталкивает из стека символ,
совпадающий с входным, и перемещает
читающую головку. Эти функции обеспечивают
опустошение стека.
Конец алгоритма.
Пример 3.11. Дана КС-грамматика:
G({+, (, ), a}, {S, A}, {SS+A | A, A(S) | a}, {S}). Последовательность построения МП-автомата будет иметь вид.
1) Q = {q}, q0 = q, T = {+, (, ), a }, N = {+, (, ), a, S, A}, N0 = S, Z = .
2)
F(q,
,
S)
= (q,
S+A),
F(q,
,
S)
= (q,
A),
F(q,
,
A)
= (q,
(S));
F(q,
,
A)
= (q,
a).
3)
F(q,
t,
t)
= (q,
)
для
каждого
t
{+,
(, ),
a}.
Распознавание строки (а) построенным МП-автоматом представлено в таблице 3.1. Полученный МП-автомат является недетерминированным.
Таблица 3.1 – Распознавание МП-автоматом строки (а)
Номер конфигурации |
Текущее состояние |
Входная строка |
Содержимое магазина |
1 |
q |
(a) |
S |
2 |
q |
(a) |
A |
3 |
q |
(a) |
(S) |
4 |
q |
a) |
S) |
5 |
q |
a) |
A) |
6 |
q |
a) |
a) |
7 |
q |
) |
) |
8 |
q |
|
|
Вопрос 17
Алгоритм 3.10. Построение расширенного МП-автомата по КС-грамматике.
Построим МП-автомат, выполняющий правосторонний разбор. Данный автомат имеет единственное текущее состояние и одно заключительное состояние, в котором стек пуст. Стек содержит левую часть текущей сентенции. Первоначально в стек помещается специальный магазинный символ, маркер пустого стека #. На каждом шаге автомат по правилу грамматики замещает нетерминалом строку верхних символов стека или дописывает в вершину входной символ.
Вход: КС-грамматика .
Выход: расширенный МП-автомат такой, что L(M) = L(G).
Шаг 1. Положить Q = {q, r}, q0 = q, Z = {r}, N = VT VN {#}, T = VT, N0 = #.
Шаг
2. Для каждого правила вида
,
где
,
сформировать магазинную функцию вида
,
предписывающую заменять правую часть
правила в вершине стека нетерминалом
из левой части, независимо от текущего
символа входной строки.
Шаг
3. Для каждого терминала
сформировать
магазинную функцию вида
,
которая помещает символ входной строки
в вершину стека, если там нет правой
части правила, и перемещает читающую
головку.
Шаг
4. Предусмотреть магазинную функцию для
перевода автомата в заключительное
состояние
.
Конец алгоритма.
Пример 3.12. Для грамматики из примера 3.11 построить расширенный МП-автомат. Последовательность построения МП-автомата будет иметь вид.
Q = {q, r}, q0 = q, T = {+, (, ), a}, N = {+, (, ), a, S, A, #}, N0 = #, Z = r.
F(q, , S+A) = (q, S), F(q, , A) = (q, S), F(q, , (S)) = (q, A), F(q, , a) = (q, A).
F(q, t, ) = (q, t) для каждого t {+, (, ), a}.
F(q, , #S) = (r, ).
Распознавание строки (а) расширенным МП-автоматом представлено в таблице 3.2. Полученный МП-автомат является детерминированным.
Таблица 3.2 – Распознавание расширенным МП-автоматом строки (а)
Номер конфигурации |
Текущее состояние |
Входная строка |
Содержимое магазина |
1 |
q |
(a) |
# |
2 |
q |
a) |
#( |
3 |
q |
) |
#(a |
4 |
q |
) |
#(A |
5 |
q |
) |
#(S |
6 |
q |
|
#(S) |
7 |
q |
|
#A |
8 |
q |
|
#S |
9 |
r |
|
|
