Les grammaires récursives gauches ne sont pas nécessairement une mauvaise chose. Ces grammaires sont facilement analysées à l'aide d'une pile pour garder une trace des phrases déjà analysées, comme c'est le cas dans l' analyseur LR .
Rappelons qu'une règle récursive gauche d'une grammaire CF est de la forme:G = ( V, Σ , R , S)
α → α β
avec un élément de V et β un élément de V ∪ Σ . (Voir la définition formelle complète du tuple ( V , Σ , R , S ) ici ).αVβV∪Σ(V,Σ,R,S)
βαα
Chaque fois qu'un nouveau terminal est reçu par l'analyseur grammatical (à partir du lexer), ce terminal est poussé au sommet de la pile: cette opération est appelée décalage .
Chaque fois que le côté droit d'une règle correspond à un groupe d'éléments consécutifs en haut de la pile, ce groupe est remplacé par un seul élément représentant la phrase nouvellement mise en correspondance. Ce remplacement s'appelle une réduction .
Avec de bonnes grammaires récursives, la pile peut croître indéfiniment jusqu'à ce qu'une réduction se produise, limitant ainsi de façon assez spectaculaire les possibilités d'analyse. Cependant, ceux récursifs laissés permettront au compilateur de générer des réductions plus tôt (en fait, dès que possible). Voir l' entrée wikipedia pour plus d'informations.