Формальные языки и грамматики. Основные термины и определения

Алфавит – конечное непустое множество символов.

Термин символ следует понимать здесь в самом широком смысле слова. Символом можно считать любой знак или совокупность знаков, рассматриваемую как нечто неделимое (буква, цифра, знак препинания, служебное слово, иероглиф и т.д.).

Будем обозначать алфавит символом (sigma). Т.к. алфавит – это множество, поэтому при перечислении его элементов используются фигурные скобки.

Примеры алфавитов:

Под подразумевается алфавит языка Паскаль.

Цепочка над алфавитом - произвольная конечная последовательность символов из .

Примеры цепочек над алфавитом :

Цепочки будем обозначать греческими буквами.

Характеристикой цепочки является ее длина. Длиной цепочки называется число символов, образующих цепочку. Длина цепочки равна 9 и обозначается |

Пустая цепочка – цепочка, не содержащая символов (содержащая ноль символов). Обозначается буквой (epsilon).

Если и цепочки, то запись означает их конкатенацию (слияние).

Если - цепочка, то запись означает цепочку, образованную n-кратным повторением цепочки :

 

n-раз

Будем обозначать

- бесконечное множество всех цепочек над алфавитом , включая пустую цепочку,

- множество всех цепочек над алфавитом , не включая пустой цепочки.

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

Языком над алфавитом называется произвольное множество цепочек, составленных из символов .

Принадлежащие языку цепочки называют также предложениями языка.

Отметим, что множество цепочек всегда бесконечно, в то время как множество цепочек, образующих язык может быть конечным.

 

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

 

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

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

G=(T, N, P, S)

Где

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

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

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

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

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