- •Вопрос 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
Расширение допускает единственное -правило вида s, но в этом случае начальный символ грамматики s не должен встречаться в правых частях правил.
Определение 1.15. Язык L(G) называется языком типа k, если его можно описать грамматикой типа k, где k – максимально возможный номер типа грамматики.
Вопрос 4
Определение 3.1. Последовательность непосредственно выводимых цепочек называется выводом или цепочкой вывода
Определение 3.2. Вывод называется правосторонним (левосторонним), если в нем на каждом шаге вывода правило грамматики применяется всегда к крайнему правому (левому) нетерминальному символу в цепочке.
Вывод можно рассматривать также как процесс получения одной строки из другой. С понятием вывода тесно связано понятие разбора строки языка.
Определение 3.3. Разбор строки - это задача выяснения принадлежности заданной строки языку, порождаемому данной грамматикой. А также это последовательность правил грамматики, определенным образом соответствующая выводу.
(S T+S a+S a+T+S a+b+S a+b+T a+b+a.)
3.1.2 Дерево разбора
Графическим способом отображения процесса разбора цепочек является дерево разбора (или дерево вывода).
Определение
3.4.
Деревом разбора грамматики
называется дерево, которое соответствует
некоторой цепочке вывода и удовлетворяет
следующим условиям:
каждая вершина дерева обозначается символом грамматики
;корнем дерева является вершина, обозначенная начальным символом грамматики S;
листьями дерева (концевыми вершинами) являются вершины, обозначенные терминальными символами грамматики или символом пустой строки ;
если некоторый узел дерева обозначен символом
,
а связанные с ним узлы – символами
,
то в грамматике
существует
правило
.
Дерево разбора можно построить двумя способами: сверху вниз и снизу вверх.
Нисходящее дерево разбора
При построении дерева вывода сверху вниз построение начинается с начального символа грамматики, который помещается в корень дерева. На каждом шаге к вершине, помеченной нетерминалом, применяют правило вывода такое, чтобы содержащиеся в его правой части терминалы проектировались на символы входной строки.
Восходящее дерево разбора
Построение дерева вывода снизу вверх начинается от листьев дерева к корню. На каждом шаге в текущем уровне дерева ищут подстроку, совпадающую с правой частью какого-либо правила вывода и заменяют ее нетерминалом из левой части этого правила.
Вопрос 5
Определение 3.5. Грамматика называется однозначной, если для каждой цепочки символов языка, заданного этой грамматикой, можно построить единственный левосторонний (и единственный правосторонний) вывод.
Другими словами, для каждой цепочки символов языка, заданного однозначной грамматикой, существует единственное дерево вывода. В противном случае грамматика называется неоднозначной.
Задача установления неоднозначности грамматики в общем случае является неразрешимой. Но наличие любого правила вывода вида 3.2 приводит к неоднозначности грамматики.
P: A ® AA | a
A ® AaA | b
A®aA|Ab |g
A ® aA | aAbA | g
где AÎ VN; a, b, g Î V*.
Некоторые неоднозначные грамматики можно преобразовать в однозначные, порождающие тот же язык.
Определение 1.16.
Грамматики
G1
и G2
называются эквивалентными, если они
определяют один и тот же язык, т.е.
.
Определение 1.17.
Грамматики
G1
и G2
называются почти эквивалентными, если
заданные ими языки различаются не более
чем на пустую цепочку символов, т.е.
.
Пример 1.9. Для грамматики G1 эквивалентной будет грамматика G2 = ({0, 1}, {S}, P2, S), где P2:S 0S1 | , т.к. L(G1)=L(G2)= {0n1n | n>0} (G1=({0, 1}, {A, S}, P1, S), где множество Р состоит из правил вида: 1) S 0A1; 2) 0A 00A1;
3) A .) Почти эквивалентной для грамматики G1 будет грамматика G3 = ({0, 1}, {S}, P3, S), где P3: S 0S1 | 01, т.к. L(G3)= {0n1n | n0}.
