Определение 1.4.1. Порождающей грамматикой (грамматикой
типа 0, generative
grammar, rewrite grammar) называется четверка , где N и
- конечные алфавиты,
,
, P конечно и
. Здесь
- основной алфавит (терминальный алфавит), его элементы называются терминальными символами или терминалами
(terminal), N - вспомогательный алфавит (нетерминальный
алфавит), его элементы называются нетерминальными
символами, нетерминалами, вспомогательными символами
или переменными (nonterminal,
variable), S - начальный символ (аксиома,
start symbol). Пары
называются правилами
подстановки, просто правилами или продукциями (rewriting rule, production) и записываются
в виде
.
Пример 1.4.2. Пусть даны множества N
= {S}, ,
. Тогда
является порождающей грамматикой.
Замечание 1.4.3. Будем обозначать элементы множества строчными буквами из начала латинского алфавита, а элементы
множества N - заглавными латинскими буквами.
Обычно в примерах мы будем задавать грамматику в виде списка правил,
подразумевая, что алфавит N составляют все
заглавные буквы, встречающиеся в правилах, а алфавит
- все строчные буквы, встречающиеся в правилах. При этом правила
порождающей грамматики записывают в таком порядке, что левая часть первого
правила есть начальный символ S.
Замечание 1.4.4. Для обозначения n правил с одинаковыми левыми частями часто
используют сокращенную запись
.
Определение 1.4.5. Пусть дана грамматика G. Пишем , если
,
и
для некоторых слов
в алфавите
. Если
, то говорят, что слово
непосредственно выводимо из слова
.
Определение 1.4.8. Если ,
где
, то пишем
и говорим,
что слово
выводимо из слова
. Другими словами, бинарное отношение
является рефлексивным,
транзитивным замыканием бинарного отношения
, определенного на множестве
.
При этом последовательность слов называется выводом (derivation) слова
из слова
в грамматике G. Число n называется длиной (количеством
шагов) этого вывода.
Замечание 1.4.9. В частности, для всякого слова имеет место
(так как возможен
вывод длины 0).
Пример 1.4.10. Пусть .
Тогда
. Длина этого
вывода - 3.
Определение 1.4.11. Язык, порождаемый грамматикой G, - это множество .
Будем также говорить, что грамматика G порождает
(generates) язык L(G).
Определение 1.4.14. Две грамматики эквивалентны,
если они порождают один и тот же язык.
Пример 1.4.15. Грамматика
и грамматика
эквивалентны.
Практическое применение грамматик связанно с решением проблемы распознавания.
Проблема распознавания разрешима, если существует такой алгоритм, который за
конечное число шагов дает ответ на вопрос: принадлежит ли произвольная цепочка
над основным словарем грамматики языку, порождаемому этой грамматикой, если
такой алгоритм существует, то он называется распознаваемым. Если число шагов
алгоритма распознавания зависит от длинны
цепочки и может быть оценено до выполнения алгоритма, язык называется легко распознаваемым.