Удаление eps-правил из грамматики — различия между версиями
Строка 14: | Строка 14: | ||
(1) Построить <tex>N_e=\{A \mid A \in N</tex> и <tex>A \Rightarrow_{G}^{*}\varepsilon\}</tex>. | (1) Построить <tex>N_e=\{A \mid A \in N</tex> и <tex>A \Rightarrow_{G}^{*}\varepsilon\}</tex>. | ||
(2) Построить <tex>P'</tex> так: | (2) Построить <tex>P'</tex> так: | ||
− | + | Если <tex>A \rightarrow \alpha_0 B_1 \alpha_1 B_2 \alpha_2 ... B_k \alpha_k \in P, k \geqslant 0</tex> и <tex>B_i \in N_e</tex> для <tex>1 \leqslant i \leqslant k</tex>, | |
− | но ни один символ в цепочках <tex>a_j ( | + | но ни один символ в цепочках <tex>a_j (0 \leqslant j \leqslant k) \notin N_e</tex>, то включить в <tex>P'</tex> все правила |
вида <tex>A \rightarrow \alpha_0 X_1 \alpha_1 X_2 \alpha_2 ... X_k \alpha_k</tex> | вида <tex>A \rightarrow \alpha_0 X_1 \alpha_1 X_2 \alpha_2 ... X_k \alpha_k</tex> | ||
где <tex>X_i-</tex> либо <tex>B_i</tex>, либо <tex>\varepsilon</tex>, но не включать правило <tex>A \rightarrow \varepsilon</tex> (это могло бы произойти | где <tex>X_i-</tex> либо <tex>B_i</tex>, либо <tex>\varepsilon</tex>, но не включать правило <tex>A \rightarrow \varepsilon</tex> (это могло бы произойти |
Версия 00:04, 12 ноября 2010
Определение: |
Правила вида | называются -правилами.
Определение: |
Назовем КС-грамматику
| грамматикой без -правил (или неукорачивающей), если либо
По данной произвольной КС-грамматике
часто бывает удобно строить новую КС-грамматику без -правил, эквивалентную исходной.Алгоритм удаления ε-правил
- Вход. КС-грамматика .
- Выход. Эквивалентная КС-грамматика без -правил.
- Метод.
(1) Построитьи . (2) Построить так: Если и для , но ни один символ в цепочках , то включить в все правила вида где либо , либо , но не включать правило (это могло бы произойти в случае, если все равны ). (3) Если , включить в правила где новый символ, и положить . В противном случае положить и . (4) Положить .
Литература
- Ахо Альфред, Джеффри Ульман. Теория Синтаксического Анализа, Перевода и Компиляции. Том 1.
- Джон Хопкрофт, Раджив Мотвани, Джеффри Ульман. Введение в теорию автоматов, языков и вычислений.