Analizador predictivo en el diseño del compilador

En esto, cubriremos la descripción general de Predictive Parser y nos centraremos principalmente en el papel de Predictive Parser. Y también cubrirá el algoritmo para la implementación del algoritmo del analizador predictivo y finalmente discutirá un ejemplo implementando el algoritmo para el análisis de precedencia. Discutámoslo uno por uno.

Analizador predictivo:
un analizador predictivo es un analizador descendente recursivo sin retroceso ni copia de seguridad. Es un analizador de arriba hacia abajo que no requiere retroceso. En cada paso, la elección de la regla a expandir se realiza sobre el siguiente símbolo terminal.
Considerar  

A -> A1 | A2 | ... | An

Si el no terminal se va a expandir aún más a ‘A’, la regla se selecciona basándose únicamente en el símbolo de entrada actual ‘a’.

Algoritmo de analizador predictivo:

  1. Haz un diagrama de transición (DFA/NFA) para cada regla de gramática.
  2. Optimice el DFA reduciendo la cantidad de estados, lo que genera el diagrama de transición final.
  3. Simule la string en el diagrama de transición para analizar una string.
  4. Si el diagrama de transición alcanza un estado de aceptación después de consumir la entrada, se analiza.

Considere la siguiente gramática –

E->E+T|T
T->T*F|F
F->(E)|id

Después de eliminar la recursividad por la izquierda, la factorización por la izquierda

E->TT'
T'->+TT'|ε
T->FT''
T''->*FT''|ε
F->(E)|id

PASO 1: 
Haz un diagrama de transición (DFA/NFA) para cada regla de gramática.

  • E->TT’

  • T’->+TT’|ε

  • T->FT”

  • T”->*FT”|ε

  • F->(E)|id

PASO 2: 
Optimice el DFA al disminuir el número de estados, produciendo el diagrama de transición final.

  • T’->+TT’|ε

Se puede optimizar más adelante combinándolo con DFA para E->TT’

En consecuencia, optimizamos las otras estructuras para producir el siguiente DFA

PASO 3: 
Simulación en la string de entrada.
Los pasos involucrados en el procedimiento de simulación son:

  1. Empezar desde el estado inicial.
  2. Si llega un terminal consumirlo, pasar al siguiente estado.
  3. Si llega un no terminal pasa al estado del DFA del no terminal y vuelve sobre alcanzado hasta el estado final.
  4. Vuelva a DFA real y siga analizando.
  5. Si uno completa la lectura completa de la string de entrada, llega a un estado final y la string se analiza con éxito.

Publicación traducida automáticamente

Artículo escrito por tanushree7252 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 *