Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие 700383.doc
Скачиваний:
15
Добавлен:
01.05.2022
Размер:
4.33 Mб
Скачать

9.4.2. Примеры, иллюстрирующие первичные понятия

Рассмотрим несколько примеров, иллюстрирующих введенные понятия:

а) Задана грамматика Г1. 0 и требуется определить язык, порождаемый этой грамматикой:

Г1. 0: Vт = {a, b, c}, Va = {<I>}, R = {<I> abc}.

Схема грамматики содержит одно правило, поэтому Г1. 0 порождает язык из одного слова

L(Г1. 0) = {abc}.

б) Задана грамматика Г1. 1 и требуется определить язык, порождаемый этой грамматикой .

Г1. 1 : Vт = {a, b, c}, Va = {<I>, <B>, <C>}

R = { <I> a<B>,

<B> <C>d,

<B> dc,

<C> $}.

Построим все выводы в этой грамматике:

<I> a<B>  a<C>d ad,

<I> a<B> adc.

Следовательно язык L(Г1. 1) = {adc, ad}.

в) Задана грамматика Г1. 2 и требуется определить язык, порождаемый этой грамматикой .

Г1. 2 : Va = {<I>, <A>}, Vт = {0, 1},

R = {<I> 0<A>1,

0<A> 00<A>1,

<A> $}.

Рассмотрим несколько выводов с помощью правил грамматики Г1. 2. Применяя первое и третье правила, получаем:

<I> 0<A>1 01.

Применяя два раза первое правило и третье, имеем

<I> 0<A>1 00<A>11 0011.

В общем случае, применяя K раз первое правило, получим в результате цепочку, содержащую K нулей и K единиц.

Следовательно, язык, порождаемый грамматикой Г1. 2, содержит всевозможные цепочки, в которых число нулей равно числу единиц.

г) Задана грамматика Г1. 3 и требуется построить язык, порождаемый этой грамматикой.

Г1. 3 : Vт = {a, b}, Va = {<I>, <A>},

R = { <I> a<A>,

<A> b<A>}.

Попытка построения вывода в этой грамматике приводит нас к цепочке:

<I> a<A> ab<A> abb<A> ... ,

которая оказывается бесконечной. Другими словами, Г1. 3 порождает пустой язык.

9.4.3. Типы формальных языков и грамматик

В теории формальных языков выделяются 4 типа грамматик, которым соответствуют 4 типа языков. Эти грамматики выделяются путем наложения усиливающихся ограничений на правила грамматики.

9.4.3.1. Грамматики типа 0

Грамматики типа 0, которые называют грамматиками общего вида, не имеют никаких ограничений на правила порождения. Любое правило

r = 

может быть построено с использованием произвольных цепочек  (Vт Va)*. Например,

<T><W> <W><T>

или

x<A>b<C><D> x<H><D>.

9.4.3.2. Грамматики типа 1

Грамматики типа 1, которые называют также контекстно-зависимыми грамматиками, не допускают использования любых правил.

Правила вывода в таких грамматиках должны иметь вид:

1<A>2 12, где

- 1,2 - цепочки, возможно пустые, из множества (Vт Va)*,

- символ <А> Va ,

- цепочка   w (Vт Va)*.

Цепочки 1 и2 остаются неизменными при применении правила, поэтому их называют контекстом (соответственно левым и правым), а грамматику – контекстно зависимой.

Грамматики типа 1 значительно удобнее на практике, чем грамматики типа 0, поскольку в левой части правила заменяется всегда один нетерминальный символ, который можно связать с некоторым синтаксическим понятием, в то время как в грамматике типа 0 можно заменять сразу несколько символов, в том числе и терминальных.

Например, грамматика:

Г1. 4:

Vт = {a, b, c, d}, Va = {<I>, <A>, <B>}

R = { <I> aA<I>,

A<I> AA<I>,

AAA A<B>A,

A b,

b<B>A bcdA,

b<I> ba }

является контекстно-зависимой, поскольку второе и шестое правила имеют непустой левый контекст, а третье и пятое правила содержат оба контекста.

Вывод в такой грамматике может иметь вид:

<I> a<A><I> a<A><A><I> ab<A><I> abb<I> abba.