Transcript
Ejemplo Etapas de
Compilación
2
Fases y Etapas de Compilación
Mis Correospavillalta@gmail.com
pavillalta@ugb.edu.sv
Facebook y TwitterFacebook.com/pavillaltatwitter.com/pavillalta
Pedro Antonio Villaltahttps://plus.google.com/u/0/105223072803758915793/about
Mis perfiles en Redes Sociales
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
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
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.
Ejemplo de Análisis Léxico
ValorX = ValorY + 1;
Tenemos:
EXPRESION
PUNTO_Y_COMA
SUMA
IDENTIFICADOR
ENTERO
Ejemplo de Análisis Léxico
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.
Ejemplo de Árbol Sintáctico
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.
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.
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í.
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.
Ejemplo de Análisis Semántico
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.
Ejemplo de Código Intermedio
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.
Ejemplo Optimización de Código
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.
Ejemplo Generación de Código
Ejemplo:
C := A + B Código Fuente
Código Objeto Equivalente:
LOAD A
SUM B
STO C
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.
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
top related