Формальные грамматики — различия между версиями
Leugenea (обсуждение | вклад) м (Маленькие фиксы) |
Filchenko (обсуждение | вклад) (сслыка на левоторонний вывод, еще несколько тире) |
||
Строка 16: | Строка 16: | ||
|definition = | |definition = | ||
'''Формальная грамматика''' — способ описания формального языка, представляющий собой четверку | '''Формальная грамматика''' — способ описания формального языка, представляющий собой четверку | ||
− | <tex>\Gamma =\langle \Sigma, N, S \in N, P \subset N^{+}\times (\Sigma\cup N)^{*}\rangle</tex>, где <tex>\Sigma</tex> | + | <tex>\Gamma =\langle \Sigma, N, S \in N, P \subset N^{+}\times (\Sigma\cup N)^{*}\rangle</tex>, где <tex>\Sigma</tex> — [[wiki:Основные_определения: алфавит, слово, язык, конкатенация, свободный моноид слов|алфавит]], <tex>N</tex> — набор нетерминалов, <tex>S</tex> — начальный символ грамматики, <tex>P</tex> — набор правил вывода <tex>\alpha\rightarrow \beta</tex> |
}} | }} | ||
Строка 62: | Строка 62: | ||
Вывод строки <tex>2+2*2</tex>: <tex>S \rightarrow SOS \rightarrow SOSOS \rightarrow 2OSOS \rightarrow 2O2OS \rightarrow 2O2O2 \rightarrow 2+2O2 \rightarrow 2+2*2</tex> | Вывод строки <tex>2+2*2</tex>: <tex>S \rightarrow SOS \rightarrow SOSOS \rightarrow 2OSOS \rightarrow 2O2OS \rightarrow 2O2O2 \rightarrow 2+2O2 \rightarrow 2+2*2</tex> | ||
− | Левосторонний вывод для такой же строки: <tex>S \rightarrow SOS \rightarrow 2OS \rightarrow 2+S \rightarrow 2+SOS \rightarrow 2+2OS \rightarrow 2+2*S \rightarrow 2+2*2</tex> | + | [[wiki:Контекстно-свободные грамматики, вывод, лево- и правосторонний вывод, дерево разбора|Левосторонний вывод]] для такой же строки: <tex>S \rightarrow SOS \rightarrow 2OS \rightarrow 2+S \rightarrow 2+SOS \rightarrow 2+2OS \rightarrow 2+2*S \rightarrow 2+2*2</tex> |
Версия 05:47, 10 ноября 2011
Определение: |
Нетерминал — элемент, представляющий некоторую сущность языка (например, часть формулы) и не имеющий конкретного значения. Нетерминалы обозначаются заглавными буквами латинского алфавита. |
Определение: |
Терминал — элемент алфавита Терминалы обозначаются строчными буквами латинского алфавита. |
Последовательности из терминалов и нетерминалов обозначаются строчными буквами греческого алфавита.
Определение: |
Формальная грамматика — способ описания формального языка, представляющий собой четверку алфавит, — набор нетерминалов, — начальный символ грамматики, — набор правил вывода | , где —
Определение: |
| ( выводится из за один шаг):
Определение: |
Определение: |
Язык грамматики — все последовательности терминалов, которые можно получить из начального символа по правилам вывода. | .
Примеры грамматик
Правильные скобочные последовательности
Вывод строки
:Арифметические выражения
- — два выражения, соединенные действием
- — выражение, взятое в скобки
- — ноль
- — число, у которого первая цифра не ноль
- — действие
- — цифра, не являющаяся нулем
- — любая последовательность из цифр, возможно пустая
- — любая цифра
Вывод строки
:Левосторонний вывод для такой же строки: