![]() КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Минимизация конечных автоматовСм. вопрос 30 18. Определите, есть ли бесполезные символы в следующей грамматике, и, если они есть, постройте приведенную грамматику…. Нетерминал Очевидно, что если и только если все нетерминалы правой части правила являются порождающими, то порождающим является и нетерминал, стоящий в его левой части. Это позволяет обнаружить непорождающие нетерминалы с помощью следующей процедуры. 1. Найти правила, не содержащие нетерминалов в правых частях. Составить множество нетерминалов, встречающихся в левых частях таких правил. 2. Если найдено такое правило, что все нетерминалы, стоящие в его правой части, уже входят в множество, то добавить в множество нетерминалы, стоящие в его левой части. 3. Если на шаге 2 множество изменилось, повторить шаг 2. 4. Получено множество всех порождающих нетерминалов грамматики, а все нетерминалы, не попавшие в него, являются непорождающими. Пример Рассмотрим грамматику: 1. Возьмём множество, состоящее из единственного элемента: 2. Из 3. Множество изменилось. Переберём заново правила из грамматики. Из 4. Снова переберём правила. Из 5. После последнего обхода правил грамматики множество не изменилось, значит мы нашли все достижимые нетерминалы: 6. Теперь удалим правило
|