2010-05-31 31 views
9

No puedo encontrar ninguna descripción completa sobre el analizador LL (*), como ANTLR, en Internet.¿Cómo funcionan los analizadores LL (*)?

Me pregunto cuál es la diferencia entre un analizador LL (k) y un LL (*) uno y por qué no pueden soportar gramáticas recusrive izquierdas a pesar de su flexibilidad.

Respuesta

4

Aquí está un artículo (por Terence Parr, el autor de antlr) sobre LL(*) análisis gramática: article con un buen ejemplo de lo que es LL(*) pero no LL(k), para cualquier k.

Otra buena referencia (y mucho más completo) es el "Definitive ANTLR Reference", de nuevo por Terence Parr, y el original journal article que describe cómo funciona antlr[pdf].

1

Cuando lo veas, generalmente la cantidad de token mira hacia delante para analizar el idioma.

Esto es lo mismo para el analizador LR.

So k es la cantidad máxima de token que buscará el parer antes de tomar una decisión. Tenga en cuenta que cuanto más alto sea k, más difícil será el analizador, a menos que use un generador (ANTLR, yacc, bisonte, ...).

El analizador LL usa un enfoque descendente que significa que buscará el árbol más profundo. Debido a eso, la recursividad dejará un árbol infinitamente profundo y romperá el analizador sintáctico.

AFAIK La mayor parte del lenguaje usa el analizador LR.

Cuestiones relacionadas