Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТЯП_шпоры.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
3.21 Mб
Скачать

Расширение допускает единственное -правило вида 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 | n0}.