Выводимость

Рассмотрим, как грамматики используются для порождения языков. Правила грамматики используются для того, чтобы задавать способы подстановки или замены цепочек языка. Подстановка осуществляется путем замены некоторого нетерминала и в какой-нибудь заданной цепочке терминалов и нетерминалов на правую часть правила, левой частью которого является этот нетерминал (см. 4.1).

Определение: Из цепочки a непосредственно выводится цепочка b в граматике G (обозначение a®b) если:

1) цепочку a можно представить в виде конкатенации a= mtg;

2) цепочку b можно представить в виде конкатенации b= mzg;

3) в грамматике G есть правило t®z.

Пример:

a= bAaSB

b= bAbAcB

Из цепочки a®b в грамматике G0, так как существует правило aS®bAc.

Определение: Из цепочки a выводится цепочка b в грамматике G, если цепочка b может быть получена из a за конечное число шагов применения операции непосредственной выводимости: .

Пример:

a= bAaSB, b= abcabccB

a= bAaSB®abcaSB®abcbAcB®abcabccB= b

Определение: Язык порождающей грамматики – это множество терминальных цепочек, выводимых из начальных символов грамматики (обозначается L(G)):

Промежуточные цепочки могут состоять как из терминальных, так и из нетерминальных символов.

Определение: Промежуточные цепочки будем называть сентенциальными формами (или сентенциями).

Вопросы и упражнения

Пусть грамматика G содержит следующие правила: bA®acBc, aBc®c. Выводимы ли в данной из цепочки a=acbAacaBc цепочки b= acacBcacc, g= acacBcaca ? Докажите.

Дана грамматика G: G= (Т, N, S, R), Т= {a, b}, N= {A, B, S},

R: S®aS

bA®ab

aS®bA

Какой язык задает данная грамматика? Постройте вывод цепочки языка. Приведите пример сентенциальной формы для данного вывода.