228
правок
Изменения
Нет описания правки
{{Определение
|definition=Говорят, что [[Контекстно-свободные грамматики, вывод, лево- и правосторонний вывод, дерево разбора|контекстно-свободная(КС) грамматика]] <tex>\Gamma</tex> содержит '''непосредственную левую рекурсию''', если она содержит правило вида <tex>A \rightarrow Rightarrow A\alpha</tex>.
}}
{{Определение
}}
Методы нисходящего разбора(top=-down parsers) не в состоянии работать с леворекурсивными грамматиками. Проблема в том, что продукция вида <tex>A \Rightarrow^* A\alpha</tex> может применяться бесконечно долго, так и не выработав некий терминальный символ, который можно было бы сравнить со строкой. Поэтому требуется преобразование грамматики, которое бы устранило левую рекурсию.
==Устранение непосредственной левой рекурсии==
</ol>
<div>
for все нетерминалы <tex>A_i</tex>
*<tex>B_i \rightarrow B_j \alpha </tex>, где <tex>i < j</tex>.
Для произвольной грамматики <tex>\Gamma</tex> левую рекурсию можно устранить следующим образом: