Les gens disent souvent que les analyseurs syntaxiques LR (k) sont plus puissants que les analyseurs syntaxiques LL (k) . Ces déclarations sont vagues la plupart du temps; en particulier, devrions-nous comparer les classes pour un fixe ou l'union sur tous les k ? Alors, comment est la situation vraiment? En particulier, je m'intéresse à la place de LL (*).
Autant que je sache, les ensembles respectifs de grammaires que les analyseurs LL et LR acceptent sont orthogonaux. Parlons donc des langues générées par les ensembles respectifs de grammaires. Soit la classe de langages générés par les grammaires qui peuvent être analysés par un analyseur L R ( k ) et similaires pour les autres classes.
Je suis intéressé par les relations suivantes:
Certaines sont probablement faciles; mon objectif est de collecter une comparaison "complète". Les références sont appréciées.
Réponses:
Il existe de nombreux confinements connus. Laissez dénoter le confinement et ⊂ confinement adéquat. Soit × une incomparabilité.⊆ ⊂ ×
Soit , L R = ⋃ k L R ( k ) .L L = ⋃kL L ( k ) L R = ⋃kL R ( k )
Niveau de grammaire
Pour LL
La plupart d'entre elles ont fait leurs preuves dans les propriétés des grammaires déterministes descendantes de Rosenkrantz et Stearns. est un exercice plutôt trivial. Cette présentation par Terence Parr place L L ( * ) sur la diapositive 13. Le papier LL-grammaires régulière par Jarzabek et Krawczyk montrent L L ⊂ L L R , et leur preuve étend trivialement à L L ⊂ L L ( * )SL L ( k + 1 ) × L L ( k ) L L ( ∗ ) L L ⊂ L L R L L ⊂ L L ( * )
Pour LR
Ce sont tous des exercices simples.
LL versus LR
Niveau de langue
Pour LL
Pour LR
Knuth en a prouvé quelques-unes dans son article Sur la traduction des langues de gauche à droite dans lequel il a introduit LR (k), les autres sont prouvées dans Transforming LR (k) Grammars to LR (1), SLR (1), et (1,1) Grammaires délimitées dans le contexte droit de Mickunas et al.
LL versus LR
la source