martes, 31 de mayo de 2016

Unidad 03: 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

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.
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