undefined
undefined

ANÁLISIS SINTÁCTICO

Análisis sintáctico tipo arriba – abajo:  se considera una gramática que se adapta bien a esta clase de métodos. Es un proceso de Reducción, que construye el  parser a partir de las hojas  (símbolos de la cadena  de entrada), y encuentra hacia arriba los nodos,  hasta llegar a la raíz. En cada paso de la reducción, una subcadena de  símbolos - que coincide con el lado derecho de una  producción- es remplazada con el no  terminal del  lado izquierdo de la producción. Encuentra la derivación más derecha

Ejemplo:





Análisis sintáctico predictivo:No necesita realizar retroceso para analizar bien las sentencias del lenguaje, Sólo con ver el siguiente carácter de la entrada puede decidir cuál va a ser la siguiente producción a emplear


Condiciones:
  •  Diseñar bien la gramática
  •  Eliminar la recursividad izquierda
  •  Factorizar por la izquierda

 No está asegurado el tener una gramática predictiva,  Las gramáticas son difíciles de leer, Para las partes de las gramáticas que no son predictivas se pueden utilizar otros analizadores

Ejemplo: Id.*.Id.+.Id


Ejemplo Propuesto:
a+b*c-d*e



Cuándo usar las producciones: Las producciones del lado derecho necesitan un tratamiento especial. El analizador sintáctico descendente recursivo usara una producción € por defecto cuando no se pueda aplicar otra producción. 


Por ejemplo considérese


Prop -> begin props_opc end
Props_opc -> lista_props|€

Durante el análisis sintáctico de props_opc, si el símbolo de pre análisis no esta en PRIMERO (lista_props), entonces se usa la producción €. Esta elección es justo la correcta si el símbolo de preanalisis es end. Cualquier símbolo de pre análisis diferente de end dará como resultado un error, que se detectara durante el análisis sintáctico de prop.


Ejemplo:
if (preanalisis==)coincidir (expr);

Diseño de una analizador sintáctico predictivo: Es un programa que consiste en un procedimiento para cada no terminal. Cada procedimiento hace dos cosas:


  1. decide la producción que utilizara analizando el símbolo de pre análisis. Si el símbolo de pre análisis esta en PRIMERO 88), se usa la producción con lado derecho 8. Si hay un conflicto entre dos lados derechos de cualquier símbolo de pre análisis entonces en esa gramática no se puede emplear este método de análisis sintáctico. Si el símbolo de pre análisis no esta en el conjunto PRIMERO de ningún otro lado derecho, se usa una producción con € en el lado derecho.
  2. El procedimiento usa una producción imitando al lado derecho. Uno no terminal da como resultado una llamada al procedimiento del no terminal, y un componente léxico que coincida con el símbolo de pre análisis da como resultado que se lea el siguiente componente léxico. Si el componente léxico de la producción no coincide en algún punto con el símbolo de pre análisis, se declara un error.


Recursividad a la izquierda:es posible que un analizador sintáctico de descenso recursivo entre en un ciclo infinito. Se produce un problema con las producciones “recursividad por la izquierda”, como


Expr –> expr+term

En donde el símbolo + a la izquierda del cuerpo es el mismo que el no terminal en el encabezado de la producción. Suponga que el procedimiento para expr decide aplicar esta producción. El cuerpo empieza con expr, de manera que el procedimiento para expr se llama en forma recursiva. Cuando el símbolo de pre análisis cambia solo cuando coincide un terminal en el cuerpo, no realizan cambios en la entrada entre las llamadas recursivas expr. Como resultado la segunda llamada a expr hace exactamente lo que hizo la primera llamada lo cual significa que se realiza una tercera llamada a expr  y así sucesivamente por siempre.

0 comentarios:

Publicar un comentario