Изменения

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

Устранение левой рекурсии

43 байта добавлено, 22:13, 16 января 2016
правильное оформление англоязычных терминов
{{Определение
|definition=Говорят, что [[Контекстно-свободные грамматики, вывод, лево- и правосторонний вывод, дерево разбора|контекстно-свободная (КС) грамматика]] <tex>\Gamma</tex> содержит '''непосредственную левую рекурсию''' (англ. ''direct left recursion''), если она содержит правило вида <tex>A \to A\alpha</tex>.
}}
{{Определение
|definition=Говорят, что КС-грамматика <tex>\Gamma</tex> содержит '''левую рекурсию ''' (англ. ''left recursion)'''), если в ней существует вывод вида <tex>A \Rightarrow^* A\alpha</tex>.
}}
Методы нисходящего разбора (англ. ''top-down parsers'') не в состоянии работать с леворекурсивными грамматиками. Проблема в том, что продукция вида <tex>A \Rightarrow^* A\alpha</tex> может применяться бесконечно долго, так и не выработав некий терминальный символ, который можно было бы сравнить со строкой. Поэтому требуется преобразование грамматики, которое бы устранило левую рекурсию.
54
правки

Навигация