martes, 31 de mayo de 2016

Análisis Sintáctico.

Análisis Sintáctico.


  •  Determina  la  sintaxis,  o  estructura  de  un programa.
  •  Es un análisis a nivel de sentencias, y es mucho más complejo que el análisis léxico.
  •  Su función es tomar  el  programa  fuente  en  forma  de  tokens,  que  recibe  del analizador  léxico,  y  determinar  la  estructura  de  las sentencias del programa.
  •  Este proceso es similar a determinar la estructura de una frase

La tarea del AS es determinar la estructura sintáctica de un programa a partir de los tokens producidos por el AL. 
En resumen una función que toma como entrada la secuencia de tokens y salida el AS.

Secuencia de tokens <> árbol sintáctico

El árbol se define como estructura de datos dinámica, nodos, atributos, campos del atributo.
Manejo de errores, no solo mostrar mensaje sino recuperarse (inferir código corregido) y continuar el análisis, para encontrar tantos errores como sea posible.

Al proceso de reconocer la estructura del lenguaje fuente se conoce con el nombre de análisis sintáctico (parsing). 
 
Hay distintas clases de analizadores o reconocedores sintácticos, pero en general se clasifican en 2 grandes grupos: 
 
A.S. Ascendentes y A.S. Descendentes.

Tipos de Análisis Sintácticos

Análisis descendente: 
Partimos de la raíz del árbol (donde estará situado el símbolo inicial de la gramática) y se van aplicando reglas por la izquierda de forma que se obtiene una derivación por la izquierda de la cadena de entrada. 

Para decidir qué regla aplicar, se lee un token de la entrada.

Análisis ascendente: 
Partiendo de la cadena de entrada, se construye el árbol de análisis sintáctico empezando por las hojas (donde están los tokens) y se van creando nodos intermedios hasta llegar a la raíz (hasta el símbolo inicial), construyendo así el árbol de abajo a arriba. 

El recorrido del árbol se hará desde las hojas hasta la raíz.

La principal tarea del analizador sintáctico no es comprobar que la sintaxis del programa fuente sea correcta, sino construir una representación interna de ese programa y en el caso en que sea un programa incorrecto, dar un mensaje de error.

Función principal

Comprueba que el orden en que el analizador léxico le va entregando los tokens es válido. Si esto es así significará que la sucesión de símbolos que representan dichos tokens puede ser generada por la gramática correspondiente al lenguaje del código fuente.




No hay comentarios:

Publicar un comentario