Изменения

Перейти к: навигация, поиск

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

1778 байт добавлено, 02:47, 8 ноября 2011
Превая моя версия
{{Определение
|definition =
'''Нетерминал''' - элемент, представляющий некоторую сущность языка (например часть формулы) и не имеющий конкретного значения.
}}
 
{{Определение
|definition =
'''Формальная грамматика''' - четверкаэто способ описания формального языка, представляющий собой четверку
<tex>\Gamma =\langle \Sigma, N, S \in N, P \in N^{*}\times (\Sigma\cup N)^{*}\rangle</tex>
где <tex>\Sigma</tex> - [[алфавит]], <tex>N</tex> - набор нетерминалов, <tex>S</tex> - начальный символ грамматики, <tex>P</tex> - правило вывода <tex>\alpha\rightarrow \beta</tex>
}}
 
{{Определение
|definition =
'''Терминал''' - элемент фалфавита <tex>\Sigma</tex>
}}
 
{{Определение
|definition =
<tex>\alpha \Rightarrow \beta</tex> (<tex>\beta</tex> выводится из <tex>\alpha</tex> за один шаг), если
 
<tex>\alpha=\alpha_1\alpha_2\alpha_3</tex>
 
<tex>\beta=\beta_1\beta_2\beta_3</tex>
 
<tex>\alpha_1=\beta1</tex>
 
<tex>\alpha_3=\beta3</tex>
 
<tex>\alpha_2\rightarrow\beta2 \in P</tex>
}}
 
{{Определение
|definition =
<tex>\alpha \Rightarrow^* \beta</tex> (<tex>\beta</tex> выводится из <tex>\alpha</tex> за ноль или более шагов), если
 
<tex>\alpha \Rightarrow \gamma_1 \Rightarrow \gamma_2 \Rightarrow ... \Rightarrow \gamma_n \Rightarrow \beta</tex>
}}
 
{{Определение
|definition =
'''Язык грамматики''' - множество все последовательности терминалов, которые можно получить из начального символа по правилам вывода. <tex>L(\Gamma) = \{\omega|S \Rightarrow^{*}\omega, \omega \in \Sigma^{*}\}</tex>, где <tex>\Rightarrow^{*} </tex> обозначает, что слово <tex>\omega</tex> выводимо из нетерминала <tex>S</tex> за некоторое число шагов.
}}
То есть==Примеры грамматик=====Правильные скобочные последовательности===<tex>S \rightarrow (S)</tex> <tex>S \rightarrow SS</tex> <tex>S \rightarrow \epsilon</tex> Вывод строки <tex>(()())</tex>:<tex>S\rightarrow(S)\rightarrow(SS)\rightarrow((S)S)\rightarrow((S)(S))\rightarrow(()(S))\rightarrow(()())</tex> ===Арифметические выражения===<tex>\Sigma = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, +, *, /, -, (, )}</tex>L <tex>S \rightarrow S O S</tex> <tex>S \rightarrow (\GammaS)</tex>  <tex>O \rightarrow + | - это все цепочки в алфавите | * | /</tex> <tex>S \Sigmarightarrow (1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9) N</tex>, которые выводимы из  <tex>S\rightarrow 0</tex> <tex>N \rightarrow NN</tex> <tex>N \rightarrow \epsilon</tex> с помощью  <tex>PN \rightarrow 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0</tex>.
143
правки

Навигация