etapas de compilacion

Post on 14-Jul-2015

695 Views

Category:

Education

0 Downloads

Preview:

Click to see full reader

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

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