miércoles, 1 de junio de 2016

Clase 7 - Analisis Sintactico

Análisis Sintáctico


Analisis Sintactico: 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

Análisis Sintáctico – Proceso
       
Código fuente
Analizador léxico o rasterador
Tokens
Analizador Sintáctico
Árbol sintáctico
Analizador Semántico
Árbol con anotaciones
Optimizador de código fuente
Código intermedio
 Generador de código
Código objetivo
Optimizador de código objetivo
Código Objetivo


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.

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