Формальные грамматики — различия между версиями
ExileHell (обсуждение | вклад)  (→Язык 0^n1^n2^n)  | 
				ExileHell (обсуждение | вклад)   (→Арифметические выражения)  | 
				||
| Строка 72: | Строка 72: | ||
</tex><br/>  | </tex><br/>  | ||
| − | Вывод строки <tex>2+2*2</tex>: <tex>S \Rightarrow   | + | Вывод строки <tex>2+2*2</tex>: <tex>S \Rightarrow S\boldsymbol{OS} \Rightarrow \boldsymbol{S} OSOS \Rightarrow 2O \boldsymbol{S} OS \Rightarrow 2O2O \boldsymbol{S} \Rightarrow 2 \boldsymbol{O} 2O2 \Rightarrow 2+2\boldsymbol{O}2 \Rightarrow 2+2*2</tex>.  | 
| − | [[Контекстно-свободные грамматики, вывод, лево- и правосторонний вывод, дерево разбора|Левосторонний вывод]] этой же строки: <tex>S \Rightarrow   | + | [[Контекстно-свободные грамматики, вывод, лево- и правосторонний вывод, дерево разбора|Левосторонний вывод]] этой же строки: <tex>S \Rightarrow \boldsymbol{S}OS \Rightarrow 2\boldsymbol{O}S \Rightarrow 2+\boldsymbol{S} \Rightarrow 2+\boldsymbol{S}OS \Rightarrow 2+2\boldsymbol{O}S \Rightarrow  2+2*\boldsymbol{S} \Rightarrow  2+2*2</tex>.  | 
===Язык <tex>0^n1^n2^n</tex>===  | ===Язык <tex>0^n1^n2^n</tex>===  | ||
Версия 16:49, 11 октября 2016
Содержание
Определения
| Определение: | 
| Формальная грамматика (англ. Formal grammar) — способ описания формального языка, представляющий собой четверку , где — алфавит, элементы которого называют терминалами (англ. terminals), — множество, элементы которого называют нетерминалами (англ. nonterminals), — начальный символ грамматики (англ. start symbol), — набор правил вывода (англ. production rules или productions) . | 
| Определение: | 
 выводится из  за один шаг :
  | 
| Определение: | 
| выводится из за ноль или более шагов : ( Рефлексивно-транзитивное замыкание отношения ). | 
| Определение: | 
| Языком грамматики (англ. Language of grammar) называется . | 
| Определение: | 
| Сентенциальная форма (англ. Sentential form) — последовательность терминалов и нетерминалов, выводимых из начального символа. | 
Обозначения
- Нетерминалы обозначаются заглавными буквами латинского алфавита.
 - Терминалы обозначаются строчными буквами из начала латинского алфавита.
 -  Последовательности из терминалов (слова) обозначают строчными буквами из конца латинского или греческого алфавита.
 - Последовательности из терминалов и нетерминалов обозначаются строчными буквами из начала греческого алфавита.
 
Примеры грамматик
Правильные скобочные последовательности
Вывод строки :
.
Вывод строки :
.
Арифметические выражения
Вывод строки : .
Левосторонний вывод этой же строки: .
Язык
Данный язык является контекстно-зависимым. КЗ-грамматика для языка приведена ниже, а через лемму о разрастании доказывается его неконтекстно-свободность.
Вывод строки :
См. также
- Возможность порождения формальной грамматикой произвольного перечислимого языка
 - Иерархия Хомского формальных грамматик
 - Неукорачивающие и контекстно-зависимые грамматики, эквивалентность
 - Правоконтекстные грамматики, эквивалентность автоматам
 
Источники информации
- Wikipedia — Formal grammar
 - Wikipedia — Formal language
 - Хопкрофт Д., Мотвани Р., Ульман Д. — Введение в теорию автоматов, языков и вычислений, 2-е изд. : Пер. с англ. — Москва, Издательский дом «Вильямс», 2002. — 528 с. : ISBN 5-8459-0261-4 (рус.)