Формальные грамматики — различия между версиями
Filchenko (обсуждение | вклад) (Превая моя версия) |
|||
| Строка 1: | Строка 1: | ||
| + | {{Определение | ||
| + | |definition = | ||
| + | '''Нетерминал''' - элемент, представляющий некоторую сущность языка (например часть формулы) и не имеющий конкретного значения. | ||
| + | }} | ||
| + | |||
{{Определение | {{Определение | ||
|definition = | |definition = | ||
| − | '''Формальная грамматика''' - | + | '''Формальная грамматика''' - это способ описания формального языка, представляющий собой четверку |
<tex>\Gamma =\langle \Sigma, N, S \in N, P \in N^{*}\times (\Sigma\cup N)^{*}\rangle</tex> | <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> | где <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 = | |definition = | ||
| − | '''Язык грамматики''' - | + | '''Язык грамматики''' - все последовательности терминалов, которые можно получить из начального символа по правилам вывода. <tex>L(\Gamma) = \{\omega|S \Rightarrow^{*}\omega, \omega \in \Sigma^{*}\}</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> | ||
| + | |||
| + | <tex>S \rightarrow S O S</tex> | ||
| + | |||
| + | <tex>S \rightarrow (S) </tex> | ||
| + | |||
| + | <tex>O \rightarrow + | - | * | /</tex> | ||
| + | |||
| + | <tex>S \rightarrow (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>N \rightarrow 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0</tex> | ||
Версия 02:47, 8 ноября 2011
| Определение: |
| Нетерминал - элемент, представляющий некоторую сущность языка (например часть формулы) и не имеющий конкретного значения. |
| Определение: |
Формальная грамматика - это способ описания формального языка, представляющий собой четверку
где - алфавит, - набор нетерминалов, - начальный символ грамматики, - правило вывода |
| Определение: |
| Терминал - элемент фалфавита |
| Определение: |
| ( выводится из за один шаг), если
|
| Определение: |
| ( выводится из за ноль или более шагов), если |
| Определение: |
| Язык грамматики - все последовательности терминалов, которые можно получить из начального символа по правилам вывода. |
Примеры грамматик
Правильные скобочные последовательности
Вывод строки :
Арифметические выражения