Формальные грамматики

Материал из Викиконспекты
Версия от 22:13, 13 января 2014; Watson (обсуждение | вклад) (Правильные скобочные последовательности)
Перейти к: навигация, поиск

Определения

Определение:
Формальная грамматика (англ. Formal grammar) — способ описания формального языка, представляющий собой четверку Γ=Σ,N,SN,PN+×(ΣN), где Σалфавит, элементы которого называют терминалами(англ. terminals), N — множество, элементы которого называют нетерминалами(англ. nonterminals), S — начальный символ грамматики, P — набор правил вывода(англ. production rules) αβ.


Определение:
β выводится из α за один шаг (αβ):
  1. α=α1α2α3;
  2. β=β1β2β3;
  3. α1=β1, α3=β3, α2β2P.


Определение:
β выводится из α за ноль или более шагов (αβ): γ1,γ2,...,γn:αγ1γ2...γnβ.


Определение:
Языком грамматики(англ. Language of grammar) называется L(Γ)={ωΣ|Sω}.


Определение:
Сентенциальная форма(англ. Sentential form) — последовательность терминалов и нетерминалов, выводимых из начального символа.


Обозначения

  • Нетерминалы обозначаются заглавными буквами латинского алфавита.
  • Терминалы обозначаются строчными буквами из начала латинского алфавита.
  • Последовательности из терминалов (слова) обозначают строчными буквами из конца латинского или греческого алфавита.
  • Последовательности из терминалов и нетерминалов обозначаются строчными буквами из начала греческого алфавита.

Примеры грамматик

Правильные скобочные последовательности

Σ={(,)};
S(S)SSSSε

Вывод строки (()()):
$S$(S)(SS)((S)S)((S)(S))(()(S))(()()).

Вывод строки ((()())(())):
S(S)(SS)((S)S)((S)(S))
((SS)((S)))(((S)S)((S)))((()S)((S)))
((()(S))((S)))((()())((S)))((()())(())).

Арифметические выражения

Σ={0,1,2,3,4,5,6,7,8,9,0,+,,/,,(,)};

SSOS;S(S);S0;SDN;O+|||/;D1|2|3|4|5|6|7|8|9;NNN|ε;N0|1|2|3|4|5|6|7|8|9.

Вывод строки 2+22: SSOSSOSOS2OSOS2O2OS2O2O22+2O22+22.

Левосторонний вывод этой же строки: SSOS2OS2+S2+SOS2+2OS2+2S2+22.

Язык 0n1n2n

Данный язык является контекстно-зависимым. КЗ-грамматика для языка приведена ниже, а через лемму о разрастании доказывается его неконтекстно-свободность.

Σ={0,1,2};

$S$012$S$0$TS$2$T$00$T$$T$111

Вывод строки 000111222 :

$S$0$TS$20$T0TS$220$T0T$012220$T00T1$22200$T0T$1222000$TT$1222000$T$11222000111222

Литература

  • Хопкрофт Д., Мотвани Р., Ульман Д.Введение в теорию автоматов, языков и вычислений, 2-е изд. : Пер. с англ. — Москва, Издательский дом «Вильямс», 2002. — 528 с. : ISBN 5-8459-0261-4 (рус.)