Левая факторизация
Oсновная идея левой факторизации в том, что в том случае, когда неясно, какую из двух альтернатив надо использовать для развертки нетерминала A, нужно изменить A-правила так, чтобы отложить решение до
тех пор, пока не будет достаточно информации для принятия правильного решения.
Если A















Алгоритм 4.8. Левая факторизация грамматики.
Вход. КС-грамматика G.
Выход. Левофакторизованная КС-грамматика G', эквивалентная G.
Метод. Для каждого нетерминала A ищем самый длинный префикс







где A' - новый нетерминал. Повторно применяем это преобразование, пока никакие две альтернативы не будут иметь общего префикса.
Пример 4.7. Рассмотрим вновь грамматику условных
операторов из примера 4.6:
S ![]() |
|
E ![]() |
|
После левой факторизации грамматика принимает вид
S ![]() |
|
S'![]() |
|
E ![]() |
|
К сожалению, грамматика остается неоднозначной, а значит, и не LL(1).