Está en la página 1de 9

Prof. Serrano 1101 y 1.

103

COMPILADORES e INTRPRETE
RESUMEN PARA EXAMEN PARCIAL
Un INTRPRETE es un programa informtico capaz de analizar y ejecutar otros programas, escritos en un lenguaje de alto nivel. Los intrpretes se diferencian de los compiladores en que mientras estos traducen un programa desde su descripcin en un lenguaje de programacin al cdigo mquina del sistema destino, los primeros (los interpretes) slo realizan la traduccin a medida que sea necesario, tpicamente, instruccin por instruccin, y normalmente no guardan el resultado de dicha traduccin. Los programas interpretados suelen ser ms lentos que los compilados debido a la necesidad de traducir el programa mientras se ejecuta, pero a cambio son ms flexibles como entornos de programacin y depuracin (lo que se traduce, por ejemplo, en una mayor facilidad para reemplazar partes enteras del programa o aadir mdulos completamente nuevos), y permiten ofrecer al programa interpretado un entorno no dependiente de la mquina donde se ejecuta el intrprete, sino del propio intrprete (lo que se conoce comnmente como mquina virtual).

Introduccin a los Compiladores


La escritura de compilador correspondiente los lenguajes de programacin la arquitectura de computadora, la teora de compuesto s y lenguajes, los algoritmos, la ingeniera de software. Qu es un compilador? Es un programa que lee un programa escrito en lenguaje fuente, y lo traducido a su lenguaje objeto de bajo nivel. Adems genera una lista de los posibles errores encontrados en el lenguaje fuente, Traductor <------------------ lenguaje de alto nivel<------------------------- lenguaje fuente Compilado r < ----------------- lenguaje de bajo nivel

Caracterstica de los Compiladores c Intrpretes


1. Compiladores Una nica compilacin Mayor velocidad de ejecucin Mayor detalle de los errores Mayor consumo de memoria 2. Interpretes Interpretacin en ejecucin Menor velocidad en ejecucin Menor detalle de errores Menor consumo de memoria

Contexto de un Compilador
Este es el procedimiento que integra cada una de las fases del compilador las cuales son: Precompilador Compilador Enlazador Depredador Ensamblador

Prof. Serrano 1101 y 1.103

Tipos de compiladores
Dentro de los tipos de compiladores podemos mencionar: Ensamblador Compilador Cruzado Compilador con Montador Auto Compilador Meta Compilador Descompilador

Estructura o fase de un compilador

Fase de un compilador Anlisis Lxico


El analizador lxico o escner, transforma el texto fuente en una secuencia ordenada de elementos lxicamente vlidos. Tokens: equivale al seguimiento de una secuencia ms bien la oportunidad de los tokens. Los tokens se dividen en dos: 1. Especficos 2. No especficos 'tokens especficos: entre los tokens especificamos si utilizamos Palabras reservadas Separadas Operadores

Prof. Serrano 1101 y 1.103


No especficos: entre los tokens no especificamos Identificadores Constantes Etiquetas

Nota
Los errores lxicos son difciles de detectar y sucede delegarse o especificarse en el anlisis sintctico.

Anlisis Sintctico
El analizador sintctico recibe los tokens y comprueban su ordenacin concreta, generan un rbol sintctico y sus funciones son: Guiar la traduccin Gestin de errores Relacin de ordenadores

Anlisis Semntico
Esta comprueba que el rbol sintctico es semnticamente valido, genera su rbol semntico o etiquetado. Su validacin consiste en: Tipos de resultado intermedio Conciersiones implcitas Sobre carga de operaciones

Generacin de cdigo intermedio Este generador transforma un rbol semntico en lina representacin de un lenguaje intermedio cercano al cdigo objeto. Optimizacin de cdigo intermedio: El optimizador de cdigo realiza modificaciones sobre el cdigo intermedio pasa a mejorar la ejecucin en velocidad y tamao (esto es reducir los cdigos aunque estos pierdan su estructura). Generacin de cdigo objeto Este transforma el cdigo intermedio optimizado en cdigo objeto de bajo nivel. Tabla de smbolos Es una estructura de dalos que contiene un registro por cada identificador, con cada campo para los atributos del identificador. La tabla de smbolos realiza los siguientes procesos: 1. Almacena estructura de datos Variable Constante Etiquetas Tipos Valores Asignatura de funciones

Prof. Serrano 1101 y 1.103


2. Operacin de la tabla de smbolos Insertar smbolos Consultar smbolos Borrar smbolos

Gestin de errores
Esta fase cuenta con las siguientes caractersticas: 1. Deteccin de errores Lxico Sintctico Semntico 2. recuperacin de errores Para al primer error Recuperar Recuperar volviendo a un contexto viable

Clasificacin de los Compiladores


Los compiladores se clasifican en: Compiladores de una pasada Compiladores de mltiples pasadas Compiladores de carga y ejecucin Compiladores de operacin o de optimatizacion Estos se han clasificado dependiendo de cmo hayan sido construidos o de que funcin se supone que realicen. A pesar de esta aparente complejidad, las tareas bsicas que debe realizar cualquier compilador son excepcionalmente las mismas, por tanto seguimos con la lista anterior: Compiladores incrementales Ensambladores Compiladores cruzados Compiladores conmutados Auto compiladores Meta compiladores Descompiladotes

Compiladores de una sola pasada:


Este se encarga de examinar el cdigo fuente una sola vez, generando as el cdigo o programa objeto. Compiladores

de Mltiples Pasadas:
Estos requieren pasos intermedios para producir un cdigo en otro lenguaje y una pasada final para producir y optimizar el cdigo producido durante las pasadas anteriores.

Compiladores de Optimacin:
Este lee un cdigo fuente lo analiza y descrube errores Secuenciales sin ejecutar el programa.

Prof. Serrano 1101 y 1.103

Compiladores Incrementales:
Este genera un cdigo objeto instruccin por instruccin (en vez de hacerlo para todo el programa).

Ensamblador:
El lenguaje fuente es propiamente el ensamblador y posee una estructura sencilla.

Compilador

Cruzado:
Este genera cdigo en lenguaje objeto para una maquina diferente a la que se esta usando para compilar. Es perfectamente normal construir un compilador de pascal que generar cdigo para MS-DOS y que el compilador funcione en Linux y se haga escrito en CTR.

Compilador Conmutado
Este compila distintos mdulos de forma independiente y despus es capaz de entrelazarlos. Auto

Compilador
Este se encuentra escrito en el mismo lenguaje que el va a compilar. Evidentemente no se puede ejecutar la primera vez, sirve para crear aplicaciones que amplen el lenguaje y mejora el cdigo general. Ejemplo DELPHI y C + +.

Meta Compilador:
Es sinnimo de compilador de compiladores y se refiere a un programa que recibe como entrada las especificaciones del lenguaje para el que se desea obtener un compilado y genera como salida el compilador para ese lenguaje. El desarrollo de los meta compiladores.se encuentra con la dificultad de unir la generacin de cdigo con la parte de anlisis.

Descompilador
Es un programa que acepta como entrada cdigo de mquina y lo traduce a un lenguaje de alto nivel realizando el proceso inmerso a la compilacin.

MAS SOBRE EL ADMINISTRADOR DE LA TABLA DE SMBOLOS


Una funcin esencial de un compilador es registrar los identificadores utilizados en el programa fuente y reunir informacin sobre los distintos atributos de onda identificadores: estos atributos pueden proporcionar informacin sobre la memoria asignada a un identificador, esto es su tipo y su mbito. Cuando el analizador lxico detecta un identificador en el programa fuente este identificador se introduce automticamente en la tabla de smbolos. Sin embargo, normalmente los atributos de 1111 identificador no se pueden determinar durante el anlisis lxico. Las fases restantes introducen informacin sobre los identificadores en la tabla de smbolos y despus la utilizan de varias formas, El generador de cdigo por lo general, introduce y utiliza la informacin detallada sobre la memoria asignada a los identificadores.

Prof. Serrano 1101 y 1.103

Detencin e Informacin Errores


Las fases del anlisis sintctico y semntico por lo general, manejan una gran parte de errores detectables por el compilador. La fase lxica puede detectar errores donde los caracteres restantes de la entrada no forman ningn componente lxico del lenguaje. Los errores donde la cadena de componentes lxico violan las reglas de estructura del lenguaje son determinados por la fase del anlisis sintctico. Durante el anlisis semntico el compilado intenta detectar construcciones que tengan la estructura sintctica correcta pero que no tengan significado para la operacin implicada. Ejemplo; si se intenta sumar- dos identificadores uno de los cuales es el nombre de una matriz y el otro es el nombre de un procedimiento.

Compiladores e Intrprete
La diferencia entre el anlisis sintctico y el anlisis semntico es que en el anlisis semntico no se aplican los atributos.

Herramienta que muestran tipos de anlisis de programa fuente


Las herramientas que manipulan cualquier tipo de software o programa fuente realizan primero algn tipo de anlisis. Ejemplo de estas herramientas: Editores de estructuras Impresoras estticas Verificadores estticos Interprete

Editor de Estructura:
Este toma secuencias de/ordenes como entrada para construir un programa fuente. El editor de estructura no solo realiza las funciones de creacin y modificacin de texto de un editor sino que tambin analiza el texto del programa imponiendo el programa fuente una estructura jerarqua oprimida.

Impresora Estticas:
Esta analiza un programa y lo imprime de forma que la estructura del programa resulte claramente visible. Ejemplo; los comentarios pueden aparecer con un tipo de letra especial, y las preposiciones pueden aparecer con una identificacin proporcional a una profundidad de su anidamiento en una organizacin jerrquica a las proposiciones.

Verificaciones Estticas:
Este lee un programa lo analiza e intenta descubrir errores potenciales sin ejecutar el cdigo fuente al programa. La parte del anlisis es similar a la que se encuentra en los compiladores de optimacin. As un verificador esttico puede delectar si hay parte de un programa que nunca se podr ejecutar a si cierta variable se usa antes de que sea definida.

Prof. Sen-ano 1101 y 1103

Interprete
En lugar de producir un lenguaje objeto como resultado de una ejecucin. Traduccin

dirigida por la sintaxis


Esta es una tcnica de compilacin orientado a la gramtica muy del para organizar la etapa inicial de un compilador. Una gramtica dependiente del contexto tiene cuatro componentes. 1. Un conjunto de componente lxicos denominados smbolos terminales 2. Un conjunto de no terminales. 3. Un conjunto de producciones en el que cada produccin consta de un no terminal llamado lado izquierdo de la produccin, una fecha y una secuencia de componentes lxicos no terminales llamados lado derecho de la produccin. 4. La produccin o denominacin de un no terminal como smbolo inicial. La produccin del smbolo inicial se lista primero se supone que los dgitos, los smbolos como (< > = /) y las cadenas en negritas (while) son terminales. Un nombre en cursiva es un no terminal y se supondr que cualquier nombre o smbolo que no este en cursiva es un componente lxico. Por comodidad de notacin las producciones con el mismo no terminal del lado izquierdo con los lados derecho alternativamente separado por el smbolo " / " que se leer "o". Los no terminales son los nombres en cursivas: Lista y digito, siendo lista el no terminal inicial porque sus producciones se distinguen primero. Ejemplo:;

Una' cadena de componente lxicos es una secuencia de cero o ms componentes lxicos. La cadena que contiene cero componentes lxicos se escribe con el smbolo ( ), y este a su vez recibe el nombre de cadena vaca.

Tabla de smbolos
Una tabla de smbolos es el medio de almacenamiento de toda la informacin de referente a al variables y objetos en general del programa fuente que se esta compilando. Es una estructura de informacin que se rene en las fases de sntesis y se emplean en la fase de sintaxis de la sintaxis para generar el cdigo objeto. Ejemplo;- en el anlisis lxico, la cadena de carcter o lexema de un identificador se guarda en la tabla de smbolos. En las fases posteriores se aade informacin como: tipo, usos y su posicin en la memoria (procedimientos, variables y etiquetas). La informacin almacenada en la tabla de smbolos vara de un compilador a otro y de un lenguaje a otro.

Prof. Serrano 1101 y 1.103


Caracterstica de una Tabla de Smbolos 1. esta necesita reunir toda informacin y tiene que recurrir a la semntica para completar los detalles: en pascal un ID debe estar declarada ante de usarse un ID solo se declara una vez ver compatibilidad de tipos en la sentencias para realizar conversiones. no es necesario que la informacin se almacene como tabla es frecuente el uso de rboles y lista. la tabla consta de nombres y atributos: tipos o valor, o ambos.

2. 3.

Dimensin o nmero de parmetros Esta es el puntero o el lugar donde se declara y referencia a un nombre: informacin del alcance cuando el lenguaje es orientado a bloque.

Interfaces de la tabla de smbolos

Operacin bsica

Las rutinas de las tablas de smbolos se refieren a presentacin y recuperacin de lexemas. Cuando se guarda un lexema tambin se guarda el componente lxico apropiado. Estas rutinas pueden manejar palabras claves, reservadas insertndoles al hincar la tabla. Nombre del procedimiento Tipo Accin IDNUE IDVIE ENTBLQ SALBLQ PRONUE PRO VIE Func Func Proc Proc Func
<

Se comprueba que no existe y se incluye Se localiza la posicin de un ID Se da entrada en un bloque Se da salida en un bloque Se almacena al atributo comprobando su validez Se recupera el atributo de un ID

Func

Mtodos de acceso a una Tabla de smbolo


Los mtodos de acceso ms comunes son: bsqueda lineal indicacin unidimensional o bidimensional dispersin o hersing rbol binario o bsqueda

BSQUEDA LINEAL
Es una lista simple enlazada donde los ID se almacenan secuencialmente en el orden que aparecen. Tambin es una lista simple ordenada donde ID se inserta desde ya en su lugar. Se puede buscar en forma secuencia! o binaria.

INDICACIN UNIDIMENSIONAL O BIDIMENSIONAL

Prof. Serrano 1101 y. 1103

Tanto en la unir como en el Bi los tiempos de acceso varan mucho. Una mejora para el Bidimensional puede ser el tomar el ltimo carcter. DISPERSIN O HERSING Segn el costo de bsqueda es independiente de la cantidad de nombre en la tabla. La direccin donde se almacenara un nombre es una funcin del propio nombre. RBOL BINARIO O BSQUEDA Aqu se toma el primer ID como raz del rbol. Se agrega hijos derecha a izquierda, segn los ID sean menores o mayores hasta dejarlo en su orden alfabtico. LENGUAJE CON ESTRUCTURA DE BLOQUE En los lenguaje de estructura de bloques cada ID puede aparecer mas de una vez. AMPLITUD DE UN ID Este se declara al comienzo de un bloque y se puede usar dentro del ya declarado de esa forma, se puede declarar dentro de los bloques interiores al de su funcin.

Nota:
Hay una tabla por bloque y la evaluacin temporal de una tabla se maneja dentro de una matriz de bloques, cuyo ndice es el nmero de bloques en proceso, que contiene dos valores por bloques.