418
правок
Изменения
→Класс 2
== Класс 2 ==
Второй класс составляют [[Контекстно-свободные грамматики, вывод, лево- и правосторонний вывод, дерево разбора|контекстно-свободные грамматики]]. Type-2 grammars (context-free grammars) generate the context-free languages. These are defined by rules of the form A \rightarrow \gamma with A a nonterminal and \gamma a string of terminals and/or nonterminals. These languages are exactly all languages that can be recognized by a non-deterministic pushdown automaton. Context-free languages – or rather the subset of deterministic context-free language – are the theoretical basis for the phrase structure of most programming languages, though their syntax also includes contextкоторые задают контекстно-sensitive name resolution due to declarations and scopeсвободные языки. Often a subset of grammars are used to make parsing easier, such as by an LL parserЭти языки распознаются с помощью [[Автоматы_с_магазинной_памятью|автоматов с магазинной памятью]].
{{Определение
|definition =
'''Контекстно-свободные грамматикисвободная грамматика''' — (англ. ''context-free grammar'') {{---}} это формальные грамматикиформальная грамматика, всякое правило из <tex>P</tex> которых которой имеет вид <tex>A \rightarrow\beta</tex>, где <tex>A\in N </tex>, <tex>\beta \in \{\Sigma \cup N\}^{+}</tex>.
}}
То есть грамматика допускает появление в левой части правила только нетерминального символа.
===Пример===
'''Язык палиндромов'''. Задаётся формулой <tex>L=\{w \in \Sigma^* | w = w^R\}</tex>
Терминалы: буквы алфавита <tex>\Sigma</tex>;
Нетерминал: <tex>S</tex>;
Продукции: <tex>S\rightarrow\alpha S\alpha\,|\,\alpha\,|\,\varepsilon, \alpha \in \Sigma</tex>;
Начальный нетерминал {{---}} <tex>S</tex>.
== Класс 3 ==