LL(1)

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 3 de julio de 2020; las comprobaciones requieren 5 ediciones .

LL(1)  - Analizador LL , algoritmo de análisis de arriba hacia abajo . El número 1 dice que solo se necesita un token para definir la ruta de análisis .

Fácil de escribir a mano sin el uso de generadores automáticos. Se utiliza para analizar código en una serie de lenguajes de programación como Pascal y Python (antes de 3.8 [1] ).

Tiene una ejecución muy rápida y tiene un mensaje de error característico como "se esperaba tal o cual carácter".

Caracteres de la guía de reglas

Para cada no terminal A en la gramática , se genera un conjunto de terminales First(A), definido de la siguiente manera:

Para cada regla se genera un conjunto de caracteres guía , definidos de la siguiente manera:

Es posible generalizar estas definiciones para el caso en que existan reglas de la forma A → null.

Está claro que First(A) es la unión de los conjuntos de símbolos principales para todas las reglas con A en el lado izquierdo.

Una gramática es analizable en LL(1) si, para cualquier par de reglas con el mismo lado izquierdo, el conjunto de caracteres guía no se cruzan.

Para saber si una gramática es analizada por LL(1) o no en general, es conveniente utilizar el criterio de LL(1)-grammars [2] .

Descripción del analizador

Se utiliza la pila, donde se ubican los flujos de números de terminales y no terminales, de entrada (terminales) y de salida (número de reglas).

Primero, E, el símbolo inicial de la gramática, se coloca en la pila.

Luego, para cada carácter nuevo desde el flujo de entrada hasta que finalice:

Idiomas

Véase también

Notas

  1. PEP 617 - Nuevo analizador PEG para CPython | peps.python.org . peps.python.org . Consultado el 15 de julio de 2022. Archivado desde el original el 15 de julio de 2022.
  2. Kozlov Sergey Valerievich, Svetlakov Alexey Vladimirovich. Acerca de LL(1)-GRAMARAS, ALGORITMOS SOBRE ELLAS Y MÉTODOS DE ANÁLISIS EN PROGRAMACIÓN  // International Journal of Open Information Technologies. - 2022. - Vol. 10 , núm. 3 . — P. 30–38 . — ISSN 2307-8162 . Archivado desde el original el 18 de mayo de 2022.

Literatura

Enlaces