Download - Etapas de compilacion
![Page 1: Etapas de compilacion](https://reader033.vdocuments.site/reader033/viewer/2022050818/55a432461a28abe6318b4793/html5/thumbnails/1.jpg)
Ejemplo Etapas de
Compilación
![Page 2: Etapas de compilacion](https://reader033.vdocuments.site/reader033/viewer/2022050818/55a432461a28abe6318b4793/html5/thumbnails/2.jpg)
2
Fases y Etapas de Compilación
Facebook y TwitterFacebook.com/pavillaltatwitter.com/pavillalta
Pedro Antonio Villaltahttps://plus.google.com/u/0/105223072803758915793/about
![Page 3: Etapas de compilacion](https://reader033.vdocuments.site/reader033/viewer/2022050818/55a432461a28abe6318b4793/html5/thumbnails/3.jpg)
Mis perfiles en Redes Sociales
![Page 4: Etapas de compilacion](https://reader033.vdocuments.site/reader033/viewer/2022050818/55a432461a28abe6318b4793/html5/thumbnails/4.jpg)
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/
Mis Blog Educativos
![Page 5: Etapas de compilacion](https://reader033.vdocuments.site/reader033/viewer/2022050818/55a432461a28abe6318b4793/html5/thumbnails/5.jpg)
Repaso Sobre las Fases de un Compilador
Las cinco fases de un compilador descritas
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
![Page 6: Etapas de compilacion](https://reader033.vdocuments.site/reader033/viewer/2022050818/55a432461a28abe6318b4793/html5/thumbnails/6.jpg)
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 queno sea necesario en las fases posteriores.
![Page 7: Etapas de compilacion](https://reader033.vdocuments.site/reader033/viewer/2022050818/55a432461a28abe6318b4793/html5/thumbnails/7.jpg)
Ejemplo de Análisis Léxico
ValorX = ValorY + 1;
Tenemos:
EXPRESION
PUNTO_Y_COMA
SUMA
IDENTIFICADOR
ENTERO
![Page 8: Etapas de compilacion](https://reader033.vdocuments.site/reader033/viewer/2022050818/55a432461a28abe6318b4793/html5/thumbnails/8.jpg)
Ejemplo de Análisis Léxico
![Page 9: Etapas de compilacion](https://reader033.vdocuments.site/reader033/viewer/2022050818/55a432461a28abe6318b4793/html5/thumbnails/9.jpg)
II. Análisis Sintáctico
Utiliza los tokens encontrados por elanalizador léxico y comprueba si llegan en
el orden correcto proporcionado por la
gramática libre de contexto que define ellenguaje fuente.
La salida del análisis sintáctico suele ser un
árbol sintáctico con la estructura sintáctica
del programa fuente.
![Page 10: Etapas de compilacion](https://reader033.vdocuments.site/reader033/viewer/2022050818/55a432461a28abe6318b4793/html5/thumbnails/10.jpg)
Ejemplo de Árbol Sintáctico
![Page 11: Etapas de compilacion](https://reader033.vdocuments.site/reader033/viewer/2022050818/55a432461a28abe6318b4793/html5/thumbnails/11.jpg)
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.
![Page 12: Etapas de compilacion](https://reader033.vdocuments.site/reader033/viewer/2022050818/55a432461a28abe6318b4793/html5/thumbnails/12.jpg)
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.
![Page 13: Etapas de compilacion](https://reader033.vdocuments.site/reader033/viewer/2022050818/55a432461a28abe6318b4793/html5/thumbnails/13.jpg)
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í.
![Page 14: Etapas de compilacion](https://reader033.vdocuments.site/reader033/viewer/2022050818/55a432461a28abe6318b4793/html5/thumbnails/14.jpg)
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.
![Page 15: Etapas de compilacion](https://reader033.vdocuments.site/reader033/viewer/2022050818/55a432461a28abe6318b4793/html5/thumbnails/15.jpg)
Ejemplo de Análisis Semántico
![Page 16: Etapas de compilacion](https://reader033.vdocuments.site/reader033/viewer/2022050818/55a432461a28abe6318b4793/html5/thumbnails/16.jpg)
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.
![Page 17: Etapas de compilacion](https://reader033.vdocuments.site/reader033/viewer/2022050818/55a432461a28abe6318b4793/html5/thumbnails/17.jpg)
Ejemplo de Código Intermedio
![Page 18: Etapas de compilacion](https://reader033.vdocuments.site/reader033/viewer/2022050818/55a432461a28abe6318b4793/html5/thumbnails/18.jpg)
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.
![Page 19: Etapas de compilacion](https://reader033.vdocuments.site/reader033/viewer/2022050818/55a432461a28abe6318b4793/html5/thumbnails/19.jpg)
Ejemplo Optimización de Código
![Page 20: Etapas de compilacion](https://reader033.vdocuments.site/reader033/viewer/2022050818/55a432461a28abe6318b4793/html5/thumbnails/20.jpg)
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 delprograma 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.
![Page 21: Etapas de compilacion](https://reader033.vdocuments.site/reader033/viewer/2022050818/55a432461a28abe6318b4793/html5/thumbnails/21.jpg)
Ejemplo Generación de Código
Ejemplo:
C := A + B Código Fuente
Código Objeto Equivalente:
LOAD A
SUM B
STO C
![Page 22: Etapas de compilacion](https://reader033.vdocuments.site/reader033/viewer/2022050818/55a432461a28abe6318b4793/html5/thumbnails/22.jpg)
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 individualmente en
cada fase.
![Page 23: Etapas de compilacion](https://reader033.vdocuments.site/reader033/viewer/2022050818/55a432461a28abe6318b4793/html5/thumbnails/23.jpg)
Ejemplos de Generación de Errores
En el análisis léxicoSímbolos ajenos al lenguaje
En el análisis sintácticoexpresiones mal construidas
En el análisis semántico variables sin declarar