La gente suele decir que los analizadores LR (k) son más potentes que los analizadores LL (k) . Estas declaraciones son vagas la mayor parte del tiempo; en particular, ¿deberíamos comparar las clases para una fija o la unión sobre todas las k ? Entonces, ¿cómo es realmente la situación? En particular, estoy interesado en cómo encaja LL (*).
Hasta donde sé, los respectivos conjuntos de gramáticas que aceptan los analizadores LL y LR son ortogonales, así que hablemos de los lenguajes generados por los respectivos conjuntos de gramáticas. Supongamos que denota la clase de lenguajes generados por las gramáticas que pueden ser analizadas por un analizador L R ( k ) y similares para otras clases.
Estoy interesado en las siguientes relaciones:
Algunos de estos son probablemente fáciles; mi objetivo es recopilar una comparación "completa". Las referencias son apreciadas.
Respuestas:
Nivel de gramática
Para LL
Para LR
Todos estos son ejercicios simples.
LL versus LR
Nivel de idioma
Para LL
Para LR
Knuth probó algunos de estos en su artículo Sobre la traducción de idiomas de izquierda a derecha en el que introdujo LR (k), el resto se prueba en Transformar las gramáticas LR (k) en LR (1), SLR (1), y (1,1) Gramáticas del contexto derecho delimitadas por Mickunas et al.
LL versus LR
fuente