Пункт 2. Устранение цепных правил.
Цепное правило – это правило вида АЛГОРИТМ: Вход: КС-грамматика Выход: Эквивалентная КС-грамматика 1. Для каждого нетерминала 1.1. Положить 1.2. Вычислить 1.3. Если 2. Построить множество
Пункт 3. Левая факторизация правил. Левую факторизацию можно выполнять для правил грамматики, определяющих один и тот же нетерминал и имеющих одинаковое начало (префикс) правых частей. Цель такого преобразовании – устранение одинаковых префиксов. При проведении левой факторизации выполняются действия, подобные вынесению за скобки общего левого множителя в алгебраических выражениях. Алгоритм преобразования состоит в следующем. Вход: КС-грамматика Выход: Эквивалентная КС-грамматика 1. Записать все правила для нетерминала
2. Вынести за скобки влево префикс 3. Обозначить новым нетерминалом 4. Пополнить множество нетерминалов новым нетерминалом 5. Повторить пункты 1 – 4 для всех нетерминалов грамматики, для которых это возможно и необходимо.
Пункт 4. Устранение прямой левой рекурсии. Нетерминал При устранении рекурсии один вид рекурсии заменяется на другой, например, вместо левой рекурсии появляется правая. В приложениях теории формальных грамматик значительные неудобства часто создает именно левая рекурсия. Рассмотрим алгоритм устранения прямой левой рекурсии. Отметим, что если имеется несколько рекурсивных правил для одного нетерминала Вход: КС-грамматика Выход: Эквивалентная КС-грамматика 1. Вынести из грамматики все правила для рекурсивного нетерминала 2. Ввести новый нетерминал 3. Заменить в рекурсивном правиле для 4. Пополнить множество нетерминалов грамматики новым нетерминалом 5. Повторить действия пунктов 1 – 4 для всех рекурсивных нетерминалов грамматики, после чего полученные множества нетерминалов и правил принять в качестве Замечание: если
Тогда в пункте 3 будут получены такие правила:
Воспользуйтесь поиском по сайту: ![]() ©2015 - 2025 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|