Etapas de compilacion

2,953 views

Published on

Etapas de compilación, Análisis léxico,sintáctico,semántico,generación de código.

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,953
On SlideShare
0
From Embeds
0
Number of Embeds
279
Actions
Shares
0
Downloads
47
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Etapas de compilacion

  1. 1. Ejemplo Etapas de Compilación
  2. 2. 2 Fases y Etapas de Compilación Pedro Antonio Villalta https://plus.google.com/u/0/105223072803758915793/about Facebook y Twitter Facebook.com/pavillalta twitter.com/pavillalta Mis Correos pavillalta@gmail.com pavillalta@ugb.edu.sv
  3. 3. Mis perfiles en Redes Sociales
  4. 4. Mis Blog Educativos http://compiladores-interpretes.blogspot.com/ http://programacion-visualbasic-net.blogspot.com/ http://ingenieria-en-sistemas-informaticos.blogspot.com/ http://investigacion-cientifica-docente.blogspot.com/ http://soporteredes.blogspot.com/ http://ecomerce-comercio-electronico.blogspot.com/ http://miw2012.blogspot.com/ http://programacion-visual-c-net.blogspot.com/ http://programacion-web-php.blogspot.com/ http://programacion-moviles.blogspot.com/ http://noticias-detecnologia.blogspot.com/
  5. 5. Repaso Sobre las Fases de un Compilador Las cinco fases de un compilador anteriormente son las siguientes: I. Análisis léxico. II. Análisis sintáctico. III. Análisis semántica. IV. Generación de Código. V. Optimización. VI.Generación de Código Intermedio descritas
  6. 6. I. Analisis Lexico El analizador léxico lee el archivo fuente carácter por carácter y forma grupos de caracteres (lexemas) con un significado léxico mínimo, nominados tokens, que son tratados como una entidad única.  El analizador léxico también elimina los componentes no esenciales del programa fuente, e ignora los espacios en blanco, los tabuladores, los caracteres de final de línea, los comentarios y, en general, todo lo que no sea necesario en las fases posteriores. 
  7. 7. Ejemplo de Análisis Léxico ValorX = ValorY + 1; Tenemos: EXPRESION PUNTO_Y_COMA SUMA IDENTIFICADOR ENTERO
  8. 8. Ejemplo de Análisis Léxico
  9. 9. II. Análisis Sintáctico   Utiliza los tokens encontrados por el analizador léxico y comprueba si llegan en el orden correcto proporcionado por la gramática libre de contexto que define el lenguaje fuente. La salida del análisis sintáctico suele ser un árbol sintáctico con la estructura sintáctica del programa fuente.
  10. 10. Ejemplo de Árbol Sintáctico
  11. 11. III. Análisis Semántico El analizador semántico se ocupa de comprobar el significado de las sentencias. puede haber sentencias sintácticamente correctas, pero que no se puedan ejecutar por no tener ningún sentido.
  12. 12. III. Análisis Semántico Generalmente, este análisis se hace al mismo tiempo que el sintáctico, introduce rutinas semánticas que intentan encontrar errores de significado (semánticos) a partir del árbol sintáctico. Al mismo tiempo reúnen información sobre los tipos de datos del programa fuente (variables, constantes, etc.) que será utilizada en la fase de generación de código.
  13. 13. Funciones del Análisis Semántico   Determina el tipo de los resultados intermedios de las operaciones. Comprueba que los operandos de un operador pertenezcan al conjunto de los tipos posibles para el operador y si son compatibles entre sí.
  14. 14. Resultado del Análisis Semántico La salida del análisis semántico suele ser un árbol semántico, que no es más que un árbol sintáctico en el que cada nodo ha adquirido su significado.
  15. 15. Ejemplo de Análisis Semántico
  16. 16. IV. Generación de Código Intermedio Una técnica para facilitar la tarea de creación de nuevos compiladores consiste en dividir el compilador en dos partes: una fase de análisis y una de síntesis, comunicadas con un lenguaje intermedio.
  17. 17. Ejemplo de Código Intermedio
  18. 18. V. Optimización de Código Esta fase de síntesis está presente en los compiladores más sofisticados, y su propósito es producir un código objeto más eficiente: Reduciendo el espacio ocupado por el código generado. Aumentando la rapidez de ejecución. Haciendo que se necesite menos memoria cuando se ejecute.
  19. 19. Ejemplo Optimización de Código
  20. 20. VI. Generación de Código Final En esta última fase de la compilación se genera el código objeto (generalmente código de ensamblador o código máquina) a partir del código intermedio.   Se asigna espacio de memoria para cada nombre del programa fuente (variables, tipos, constantes, etc.). Se traduce cada una de las instrucciones en código intermedio a una secuencia de instrucciones en código objeto que ejecuten la misma tarea.
  21. 21. Ejemplo Generación de Código Ejemplo: C := A + B Código Fuente Código Objeto Equivalente: LOAD A SUM B STO C
  22. 22. Generación de Errores Cada una de las fases del compilador detecta unos tipos de errores determinados. Por lo tanto, la gestión de errores tiene que preverse cada fase. individualmente en
  23. 23. Ejemplos de Generación de Errores En el análisis léxico Símbolos ajenos al lenguaje En el análisis sintáctico expresiones mal construidas En el análisis semántico variables sin declarar

×