Изменения

Перейти к: навигация, поиск

Удаление бесполезных символов из грамматики

713 байт добавлено, 10:16, 30 октября 2013
Алгоритм удаления бесполезных нетерминалов
Пусть <tex>B\rightarrow\alpha</tex> {{---}} правило, первым из удалённых применяемое в выводе <tex>A \Rightarrow ^* \omega</tex>. Оно могло быть удалено только в том случае, если в <tex>\alpha</tex> присутствуют недостижимые нетерминалы. Но так как было выбрано первое удалённое правило из вывода, то <tex>B</tex> — достижим, следовательно достижимы и все нетерминалы из <tex>\alpha</tex>. Значит, это правило не могло быть удалено.
 
=== Пример ===
 
Пусть нам дана грамматика:
<tex>
\begin{array}{l l}
S\rightarrow AS|BS|s \\
E\rightarrow EF|FF \\
A\rightarrow a \\
F\rightarrow f
 
\end{array}
</tex>.<br>
Удалим правила, содержащие непорождающие нетерминалы и получим грамматику
<tex>
\begin{array}{l l}
S\rightarrow AS|s \\
E\rightarrow EF|FF \\
A\rightarrow a \\
F\rightarrow f
 
\end{array}
</tex>.<br>
Теперь удалим недостижимые нетерминалы и получим грамматику
<tex>
\begin{array}{l l}
S\rightarrow AS|s \\
A\rightarrow a
\end{array}
</tex>.
=== Замечание ===
Анонимный участник

Навигация