Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЯГиА конспект.doc
Скачиваний:
19
Добавлен:
10.11.2018
Размер:
598.02 Кб
Скачать

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

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

c1<A>c2 ® c1w c2,  

где c1, c2 - цепочки, возможно пустые, из множества (Vт È Va)*, символ <А> Î Va и цепочка                 w Î (Vт È Va)*. Цепочки c1 и c2 остаются неизменными при применении правила, поэтому их называют контекстом (соответственно левым и правым), а грамматику - контекстно зависимой.

Грамматики типа 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.

1.3.3. Грамматики типа 2

Грамматики типа 2 называют контектно-свободными и бесконтекстными грамматиками ( КС-грамматики или Б-грамматики). Правила вывода таких грамматик имеют вид:  

<A> ® a,  

где <A> Î Va и a Î (Vт È Va)*. Очевидно, что эти правила получаются из правил грамматики типа 1 при условии c1 = c2 = $. Поскольку контекстные условия отсутствуют, то правила КС-грамматик получаются проще, чем правила грамматик типа 1. Именно такие грамматики используются для описания языков программирования. Примером КС-грамматики может служить следующая:  

Г1. 5:

Vт = {a, b}, Va = {<I>},

R = { <I> ® a<I>a,

<I> ® b<I>b, <I> ® aa, <I> ® bb}.

 

Эта грамматика порождает язык, который состоит из цепочек, каждая из которых в свою очередь состоит из двух частей, цепочки b Î Vт* и зеркального отображения этой цепочки b'.

L( Г5 ) = { bb' | b ÎVт+},

где Vт+ - это множество Vт* без пустой цепочки. С помощью правил этой грамматики может быть построена, например, следующая цепочка:  

<I> Þ a<I>a Þ ab<I>ba Þ aba<I>aba Þ ababbaba.

1.3.4. Грамматики типа 3

Грамматики типа 3 называют автоматными грамматиками (А - грамматиками). Правила вывода в таких грамматиках имеют вид:  

<A> ® a или <A> ® a<B> или <A> ® <B> a,  

где a Î Vт, <A>, <B> Î Va, причем грамматика может иметь только правила вида <A> ® a<B> - правосторонние правила, либо только  вида <A> ® <B>a - левосторонние правила. Примерами автоматных грамматик могут служить правосторонняя грамматика Г1. 6 и левосторонняя грамматика Г1. 7.

Г1. 6:

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

R = { <I> ® a<I>,

<I> ® a<A>, <A> ® b<A>, <A> ® b<Z>, <Z> ® $ }.

Г1. 7:

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

R = { <I> ® <A>b,

<A> ® <A>b, <A> ® <Z>a, <Z> ® <Z>a, <Z> ® $ }.

 

Эти грамматики являются эквивалентными и порождают язык

L(Г7) = {a...ab...b | n,m > 0}.

Между множествами языков различных типов существует отношение включения:

{ L типа 3 } Ì { L типа 2 } Ì{ L типа 1 } Ì{ L типа 0}.

Доказано, что существуют языки типа 0, не являющиеся языками типа 1, языки типа 2, не являющиеся языками типа 1, и языки типа 3, не являющиея языками типа 2.

Учитывая, что наибольшее практическое применение находят грамматики типа 2 и типа 3, дальнейшее изложение посвящается рассмотрению именно этих типов грамматик.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]