etapas de compilacion

23
Ejemplo Etapas de Compilación

Upload: pedro-antonio-villalta-pavillalta

Post on 14-Jul-2015

694 views

Category:

Education


0 download

TRANSCRIPT

Page 1: Etapas de compilacion

Ejemplo Etapas de

Compilación

Page 2: Etapas de compilacion

2

Fases y Etapas de Compilación

Mis [email protected]

[email protected]

Facebook y TwitterFacebook.com/pavillaltatwitter.com/pavillalta

Pedro Antonio Villaltahttps://plus.google.com/u/0/105223072803758915793/about

Page 4: Etapas de compilacion

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

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

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

Ejemplo de Análisis Léxico

ValorX = ValorY + 1;

Tenemos:

EXPRESION

PUNTO_Y_COMA

SUMA

IDENTIFICADOR

ENTERO

Page 8: Etapas de compilacion

Ejemplo de Análisis Léxico

Page 9: Etapas de compilacion

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

Ejemplo de Árbol Sintáctico

Page 11: Etapas de compilacion

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

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

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

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

Ejemplo de Análisis Semántico

Page 16: Etapas de compilacion

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

Ejemplo de Código Intermedio

Page 18: Etapas de compilacion

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

Ejemplo Optimización de Código

Page 20: Etapas de compilacion

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

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

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

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