Удаление бесполезных символов из грамматики — различия между версиями
(Новая страница: «{{В разработке}}») |
|||
Строка 1: | Строка 1: | ||
{{В разработке}} | {{В разработке}} | ||
+ | |||
+ | {{Определение | ||
+ | |definition= | ||
+ | Символ '''<tex>A</tex>''' называется '''непроизводящим''', если из него не может быть выведена конечная терминальная цепочка. | ||
+ | }} | ||
+ | |||
+ | Рассматривая правила грамматики, можно сделать вывод, что если все символы правой части являются производящими, то производящим является и символ, стоящий в левой части. Последнее утверждение позволяет написать процедуру обнаружения непроизводящих символов в следующем виде: | ||
+ | # Составить список нетерминалов, для которых найдется хотя бы одно правило, правая часть которого не содержит нетерминалов. | ||
+ | # Если найдено такое правило, что все нетерминалы, стоящие в его правой части уже занесены в список, то добавить в список нетерминал, стоящий в его левой части. | ||
+ | # Если на шаге 2 список больше не пополняется, то получен список всех производящих нетерминалов грамматики, а все нетерминалы не попавшие в него являются непроизводящими. | ||
+ | |||
+ | {{Определение | ||
+ | |definition= | ||
+ | Символ '''<tex>A</tex>''' называется '''недостижимым''' в КС-грамматике '''<tex>\Gamma</tex>''', если '''<tex>A</tex>''' не появляется ни в одной выводимой цепочке. | ||
+ | }} | ||
+ | |||
+ | Рассматривая правила грамматики, можно заметить , что если нетерминал в левой части правила является достижимым , то и все символы правой части являются достижимыми. Это свойство правил является основой процедуры выявления недостижимых символов, которую можно записать так: | ||
+ | # Образовать одноэлементный список, состоящий из начального символа | ||
+ | # Если найдено правило, левая часть которого уже имеется в списке, то включить в список все символы, содержащиеся в его правой части. | ||
+ | # Если на шаге 2 новые нетерминалы в список больше не добавляются, то получен список всех достижимых нетерминалов, а нетерминалы, не попавшие в список, являются недостижимыми. | ||
+ | |||
+ | {{Определение | ||
+ | |definition= | ||
+ | Символ '''<tex>A</tex>''' называется '''бесполезным''' в | ||
+ | КС-грамматике '''<tex>\Gamma</tex>''', если он является недостижимым или непроизводящим. | ||
+ | }} | ||
+ | |||
+ | Исключить бесполезные символы из грамматики можно удаляя правила, содержащие вначале непроизводящие, а затем недостижимые символы. |
Версия 09:27, 14 октября 2010
Эта статья находится в разработке!
Определение: |
Символ | называется непроизводящим, если из него не может быть выведена конечная терминальная цепочка.
Рассматривая правила грамматики, можно сделать вывод, что если все символы правой части являются производящими, то производящим является и символ, стоящий в левой части. Последнее утверждение позволяет написать процедуру обнаружения непроизводящих символов в следующем виде:
- Составить список нетерминалов, для которых найдется хотя бы одно правило, правая часть которого не содержит нетерминалов.
- Если найдено такое правило, что все нетерминалы, стоящие в его правой части уже занесены в список, то добавить в список нетерминал, стоящий в его левой части.
- Если на шаге 2 список больше не пополняется, то получен список всех производящих нетерминалов грамматики, а все нетерминалы не попавшие в него являются непроизводящими.
Определение: |
Символ | называется недостижимым в КС-грамматике , если не появляется ни в одной выводимой цепочке.
Рассматривая правила грамматики, можно заметить , что если нетерминал в левой части правила является достижимым , то и все символы правой части являются достижимыми. Это свойство правил является основой процедуры выявления недостижимых символов, которую можно записать так:
- Образовать одноэлементный список, состоящий из начального символа
- Если найдено правило, левая часть которого уже имеется в списке, то включить в список все символы, содержащиеся в его правой части.
- Если на шаге 2 новые нетерминалы в список больше не добавляются, то получен список всех достижимых нетерминалов, а нетерминалы, не попавшие в список, являются недостижимыми.
Определение: |
Символ | называется бесполезным в КС-грамматике , если он является недостижимым или непроизводящим.
Исключить бесполезные символы из грамматики можно удаляя правила, содержащие вначале непроизводящие, а затем недостижимые символы.