Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОБЗОРНАЯ ЛЕКЦИЯ ПО КУРСУ ЯП и МТ.docx
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
141.53 Кб
Скачать

5 Порождающие грамматики (Грамматики н.Хомского1)

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

Порождающей грамматикой называется четверка:

G=(T, N, P, S)

Где

Т – конечное множество терминальных (основных) символов- основной алфавит. Элементами множества Т являются символы, из которых в конечном итоге и состоят цепочки языка, порождаемые грамматикой. Т – это не что иное, как алфавит языка, порождаемого грамматикой. В дальнейшем терминалы будем обозначать малыми латинскими буквами a, b, c, .. и. т.д;

N - конечное множество нетерминальных (вспомогательных) символов – вспомогательный алфавит. Нетерминалы – это понятия грамматики (языка), которые используются при его описании. Нетерминалы будем обозначать заглавными латинскими буквами A, B, C, …;

Р – конечное множество правил вывода, называемых также продукциями. Каждое правило множества имеет вид: , (символ «» читается как «это есть»)

где и - цепочки терминальных и нетерминальных символов. Цепочка не должна быть пустой, цепочка может быть пуста: ; . Правило вывода определяет возможность подстановки вместо в процессе вывода (порождения) цепочек языка;

S (S N) - начальный символ грамматики – один из множества нетерминальных символов, начальный нетерминал. Начальный нетерминал – это понятие грамматики, соответствующее правильному предложению языка.

6 Классификация формальных грамматик

Н.Хомский предложил разделение грамматик на четыре типа в зависимости от вида их правил.

Тип 0 . Произвольная грамматика (грамматика общего вида). На вид их правил не накладывается никаких ограничений. Правила имеют вид: , где и - цепочки терминалов и нетерминалов. Цепочка не должна быть пустой.

Примером грамматики типа 0 является грамматика G=({A,S}, {0,1},P,S), где P={S0A1,0A00A1,A}.

Тип 1 . Контекстно-зависимая грамматика (КЗ-грамматика) – это грамматика, правила вывода которой имеют вид: , где - цепочки терминалов и нетерминалов, А- нетерминальный символ. Цепочки и называются соответственно правым и левым контекстом. Они задают условия вывода: для любой цепочки замена нетерминала А возможна только в контексте и . Языки, порождаемые КЗ-грамматиками называются контекстно-зависимыми языками.

Примером КЗ-грамматики является грамматика G=({B,C,S},{a,b,c},P,S),

где P={ SaSBC, SabC, CB BC, bBbb, bCbc,cCcc}

Тип 2 . Контекстно-свободная грамматика (КС-грамматика) . Правила имеют вид:

,

где А- нетерминал,  - цепочка терминалов и нетерминалов. Характерная особенность – в левой части правил всегда один нетерминальный символ.

Языки, порождаемые КС-грамматиками называются контекстно-свободными языками.

Примером КС-грамматики является грамматика G=({Е,Т,В},{I,+,*,(,)}, P, E),

где P = {ЕЕ+Т, ЕТ, Т Т*В, ТВ, Вi, B(E)}

Тип 3 . Автоматные (регулярные) грамматики. Все правила имеют одну из трех форм:

AaB

Aa

A,

Где A, B – нетерминалы, a- терминал,  - пустая цепочка

Языки, порождаемые автоматными-грамматиками называются автоматными (регулярынми) языками.

Примером автоматной грамматики является грамматика G=({А,S},{0,1}, P, S),

где P = {S0A, S1A, A 0A, A0, A1}