Изменения

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

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

1262 байта добавлено, 10:49, 30 октября 2013
Достижимые и недостижимые нетерминалы
Недостижимые нетерминалы по определению не достижимы из стартового, следовательно они не могли участвовать в выводе какого-либо слова.
}}
 
=== Пример ===
Рассмотрим грамматику:
<tex>
\begin{array}{l l}
S\rightarrow AB|CD\\
A\rightarrow EF\\
G\rightarrow AD\\
C\rightarrow c
 
\end{array}
</tex>
# Возьмём множество, состоящее из единственного элемента: <tex>\lbrace S \rbrace</tex>.
# Из <tex>S</tex> достижимы нетерминалы <tex>A</tex>, <tex>B</tex>, <tex>C</tex> и <tex>D</tex>. Добавим их в множество и получим <tex>\lbrace S, A, B, C, D \rbrace</tex>.
# Множество изменилось. Рассмотрим следующие элементы в нём. Из <tex>B</tex>, <tex>C</tex> и <tex>D</tex> нельзя вывести нетермиалы, а из <tex>A</tex> можно вывести <tex>E</tex> и <tex>F</tex>.
# Полученное множество нетерминалов будет таким: <tex>\lbrace S, A, B, C, D, E, F \rbrace</tex>. Больше оно меняться не будет.
# Теперь удалим правило <tex>G\rightarrow AD</tex>, так как оно содержит в левой части нетерминал, которого нет в полученном множестве.
== Полезные и бесполезные нетерминалы ==
Анонимный участник

Навигация