Формальные грамматики — различия между версиями
Leugenea (обсуждение | вклад) м |
Filchenko (обсуждение | вклад) (→Определения: вынес обозначения, добавил забытое) |
||
Строка 3: | Строка 3: | ||
|definition = | |definition = | ||
'''Нетерминал''' — элемент, представляющий некоторую сущность языка (например, часть формулы) и не имеющий конкретного значения.<br/> | '''Нетерминал''' — элемент, представляющий некоторую сущность языка (например, часть формулы) и не имеющий конкретного значения.<br/> | ||
− | |||
}} | }} | ||
Строка 9: | Строка 8: | ||
|definition = | |definition = | ||
'''Терминал''' — элемент [[Основные_определения: алфавит, слово, язык, конкатенация, свободный моноид слов|алфавита]] <tex>\Sigma</tex>. <br/> | '''Терминал''' — элемент [[Основные_определения: алфавит, слово, язык, конкатенация, свободный моноид слов|алфавита]] <tex>\Sigma</tex>. <br/> | ||
− | |||
}} | }} | ||
− | |||
− | |||
{{Определение | {{Определение | ||
Строка 38: | Строка 34: | ||
'''Язык грамматики''' — все последовательности терминалов, которые можно получить из начального символа по правилам вывода. <tex>L(\Gamma) = \{\omega|S \Rightarrow^{*}\omega, \omega \in \Sigma^{*}\}</tex>. | '''Язык грамматики''' — все последовательности терминалов, которые можно получить из начального символа по правилам вывода. <tex>L(\Gamma) = \{\omega|S \Rightarrow^{*}\omega, \omega \in \Sigma^{*}\}</tex>. | ||
}} | }} | ||
+ | |||
+ | = Обозначения = | ||
+ | * Нетерминалы обозначаются заглавными буквами латинского алфавита. | ||
+ | * Терминалы обозначаются строчными буквами из начала латинского алфавита. | ||
+ | * Последовательности из терминалов (слова) обозначают строчными буквами из конца латинского алфавита.<br/> | ||
+ | * Последовательности из терминалов и нетерминалов обозначаются строчными буквами греческого алфавита. | ||
=Примеры грамматик= | =Примеры грамматик= |
Версия 06:18, 10 ноября 2011
Содержание
Определения
Определение: |
Нетерминал — элемент, представляющий некоторую сущность языка (например, часть формулы) и не имеющий конкретного значения. |
Определение: |
Терминал — элемент алфавита . |
Определение: |
Формальная грамматика — способ описания формального языка, представляющий собой четверку алфавит, — набор нетерминалов, — начальный символ грамматики, — набор правил вывода | , где —
Определение: |
| ( выводится из за один шаг):
Определение: |
Определение: |
Язык грамматики — все последовательности терминалов, которые можно получить из начального символа по правилам вывода. | .
Обозначения
- Нетерминалы обозначаются заглавными буквами латинского алфавита.
- Терминалы обозначаются строчными буквами из начала латинского алфавита.
- Последовательности из терминалов (слова) обозначают строчными буквами из конца латинского алфавита.
- Последовательности из терминалов и нетерминалов обозначаются строчными буквами греческого алфавита.
Примеры грамматик
Правильные скобочные последовательности
Вывод строки
:Арифметические выражения
- — два выражения, соединенные действием
- — выражение, взятое в скобки
- — ноль
- — число, у которого первая цифра не ноль
- — действие
- — цифра, не являющаяся нулем
- — любая последовательность из цифр, возможно пустая
- — любая цифра
Вывод строки
:Левосторонний вывод для такой же строки:
Литература
- Хопкрофт Д., Мотвани Р., Ульман Д. — Введение в теорию автоматов, языков и вычислений, 2-е изд. : Пер. с англ. — Москва, Издательский дом «Вильямс», 2002. — 528 с. : ISBN 5-8459-0261-4 (рус.)