Diferencia entre el analizador de descenso predictivo recursivo y el analizador de descenso predictivo no recursivo

Requisito previo: analizador de descenso recursivo 

1. Analizador de descenso predictivo recursivo: El analizador 
de descenso recursivo es un método de análisis de sintaxis de arriba hacia abajo en el que se utiliza un conjunto de procedimientos recursivos para procesar la entrada. Un procedimiento está asociado con cada no terminal de una gramática. Aquí consideramos una forma simple de análisis de descenso recursivo llamado Analizador de descenso recursivo predictivo, en el que el símbolo de anticipación determina sin ambigüedades el flujo de control a través del cuerpo del procedimiento para cada no terminal. La secuencia de llamadas a procedimientos durante el análisis de una string de entrada define implícitamente un árbol de análisis para la entrada y se puede utilizar para construir un árbol de análisis explícito, si se desea. En el análisis de descenso recursivo, el analizador puede tener más de una producción para elegir para una sola instancia de entrada, donde entra en juego el concepto de retroceso. 

Seguimiento inverso: 
significa que, si falla una derivación de una producción, el analizador de sintaxis reinicia el proceso utilizando diferentes reglas de la misma producción. Esta técnica puede procesar la string de entrada más de una vez para determinar la producción correcta. El analizador de arriba hacia abajo comienza desde el Node raíz (símbolo de inicio) y compara la string de entrada con las reglas de producción para reemplazarlas (si coinciden). 

Para entender esto, tome el siguiente ejemplo de CFG: 

S -> aAb | aBb
A -> cx | dx
B -> xe 

Para una string de entrada, lectura, un analizador de arriba hacia abajo, se comportará así. 

Comenzará con S de las reglas de producción y hará coincidir su rendimiento con la letra de entrada más a la izquierda, es decir, ‘a’. La producción misma de S (S -> aAb) coincide con ello. Entonces, el analizador de arriba hacia abajo avanza a la siguiente letra de entrada (es decir, ‘d’). El analizador intenta expandir el no terminal ‘A’ y verifica su producción desde la izquierda (A -> cx). No coincide con el siguiente símbolo de entrada. Entonces, el analizador de arriba hacia abajo retrocede para obtener la siguiente regla de producción de A, (A -> dx). 

Ahora el analizador coincide con todas las letras de entrada de forma ordenada. Se acepta la string. 

2. Analizador de descenso predictivo no recursivo : 
una forma de análisis de descenso recursivo que no requiere ningún retroceso se conoce como análisis predictivo. También se denomina técnica de tabla de análisis LL (1) ya que estaríamos construyendo una tabla para analizar la string. Tiene la capacidad de predecir qué producción se utilizará para reemplazar la string de entrada. Para realizar sus tareas, el analizador predictivo utiliza un puntero de anticipación, que apunta a los siguientes símbolos de entrada. Para hacer que el análisis retrospectivo sea gratuito, el analizador predictivo impone algunas restricciones a la gramática y acepta solo una clase de gramática conocida como gramática LL(k)
 

El análisis predictivo utiliza una pila y una tabla de análisis para analizar la entrada y generar un árbol de análisis. Tanto la pila como la entrada contienen un símbolo de fin $para indicar que la pila está vacía y la entrada se ha consumido. El analizador se refiere a la tabla de análisis para tomar cualquier decisión sobre la combinación de elementos de entrada y pila. Puede haber casos en los que no haya una string de entrada que coincida con la producción, lo que hace que el procedimiento de análisis falle. 

Diferencia entre el analizador de descenso predictivo recursivo y el analizador de descenso predictivo no recursivo: 

Analizador de descenso predictivo recursivo

Analizador de descenso predictivo no recursivo

Es una técnica que puede requerir o no un proceso de retroceso. Es una técnica que no requiere ningún tipo de retroceso.
Utiliza procedimientos para cada entidad no terminal para analizar strings. Encuentra producciones para usar reemplazando la string de entrada.
Es un tipo de análisis de arriba hacia abajo construido a partir de un conjunto de procedimientos mutuamente recursivos donde cada procedimiento implementa uno de los no terminales de la gramática. Es un tipo de enfoque de arriba hacia abajo, que también es un tipo de análisis recursivo que no utiliza la técnica de retroceso.
Contiene varias funciones pequeñas, una para cada uno de los no terminales en gramática. El analizador predictivo utiliza un puntero de anticipación que apunta a los siguientes símbolos de entrada para que el analizador retroceda sin rastrear, el analizador predictivo impone algunas restricciones en la gramática.
Acepta todo tipo de gramáticas. Solo acepta una clase de gramática conocida como gramática LL(k).

Publicación traducida automáticamente

Artículo escrito por kumar_pratyush y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *