Escolar Documentos
Profissional Documentos
Cultura Documentos
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).
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
Tipos de compiladores
Dentro de los tipos de compiladores podemos mencionar: Ensamblador Compilador Cruzado Compilador con Montador Auto Compilador Meta Compilador Descompilador
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
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
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.
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.
Compiladores e Intrprete
La diferencia entre el anlisis sintctico y el anlisis semntico es que en el anlisis semntico no se aplican los atributos.
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.
Interprete
En lugar de producir un lenguaje objeto como resultado de una ejecucin. Traduccin
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.
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.
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
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.
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.