Словами языка, заданного грамматикой, являются все последовательности терминалов, выводимые (порождаемые) из начального нетерминала по правилам вывода.
Чтобы задать грамматику, требуется задать алфавиты терминалов и нетерминалов, набор правил вывода, а также выделить в множестве нетерминалов начальный.
Итак, грамматика определяется следующими характеристиками:
Σ – набор (алфавит) терминальных символов
N – набор (алфавит) нетерминальных символов
P – набор правил вида: «левая часть» «правая часть», где:
«левая часть» – непустая последовательность терминалов и нетерминалов, содержащая хотя бы один нетерминал
«правая часть» – любая последовательность терминалов и нетерминалов
S – стартовый (начальный) символ из набора нетерминалов.
Выводом называется последовательность строк, состоящих из терминалов и нетерминалов, где первой идет строка, состоящая из одного стартового нетерминала, а каждая последующая строка получена из предыдущей путем замены некоторой подстроки по одному (любому) из правил.
|
|
|
Конечной строкой является строка, полностью состоящая из терминалов, и, следовательно, являющаяся словом языка.
Существование вывода для некоторого слова является критерием его принадлежности к языку, определяемому данной грамматикой.
Пример – арифметические выражения
Рассмотрим простой язык, определяющий ограниченное подмножество арифметических формул, состоящих из натуральных чисел, скобок и знаков арифметических действий.
Терминальный алфавит:
Σ={'0','1','2','3','4','5','6','7','8','9','+','-','*','/','(',')'}.
Нетерминальный алфавит:
{ ФОРМУЛА, ЗНАК, ЧИСЛО, ЦИФРА }
Правила:
1. ФОРМУЛА→ФОРМУЛА ЗНАК ФОРМУЛА – (формула есть две формулы, соединенные знаком)
2. ФОРМУЛА→ЧИСЛО – (формула есть число)
3. ФОРМУЛА→(ФОРМУЛА) – (формула есть формула в скобках)
4. ЗНАК→+ | - | * | / – (знак есть плюс или минус или умножить или разделить)
5. ЧИСЛО→ЦИФРА – (число есть цифра)
6. ЧИСЛО→ЧИСЛО ЦИФРА – (число есть число и цифра)
7. ЦИФРА→0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 (цифра есть 0 или 1 или... 9)
Начальный нетерминал:
ФОРМУЛА
Вывод:
Выведем формулу (12+5) с помощью перечисленных правил вывода.
ФОРМУЛА→(ФОРМУЛА)
(ФОРМУЛА) → (ФОРМУЛА ЗНАК ФОРМУЛА)
(ФОРМУЛА ЗНАК ФОРМУЛА) → (ФОРМУЛА + ФОРМУЛА)
(ФОРМУЛА + ФОРМУЛА) → (ФОРМУЛА + ЧИСЛО)
(ФОРМУЛА + ЧИСЛО) → (ФОРМУЛА + ЦИФРА)
(ФОРМУЛА + ЦИФРА) → (ФОРМУЛА + 5)
(ФОРМУЛА + 5) → (ЧИСЛО + 5)
(ЧИСЛО + 5) → (ЧИСЛО ЦИФРА + 5)
(ЧИСЛО ЦИФРА + 5) → (ЦИФРА ЦИФРА + 5)
(ЦИФРА ЦИФРА + 5) → (1 ЦИФРА + 5)
(1 ЦИФРА + 5) → (12 + 5)






