Explora Libros electrónicos
Categorías
Explora Audiolibros
Categorías
Explora Revistas
Categorías
Explora Documentos
Categorías
Materia: Programacin en sistemas Alumno: Carlos Arturo Reyes Morales Numero de control: 07480135
Introduccin La escritura de compiladores comprende los lenguajes de programacin, la arquitectura de computadoras, teora de lenguajes, algoritmos e ingeniera de software, afortunadamente con algunas tcnicas bsicas de escritura de compiladores podemos crear traductores para una gran cantidad de lenguajes y maquinas, ahora nos centraremos en describir los componentes de un compilador, el entorno en que trabajan y algunas herramientas de diseo de compiladores. 1.1 Compiladores
Un compilador es un programa que lee un programa escrito en un lenguaje, el lenguaje fuente y lo traduce a un programa equivalente en otro lenguaje, el lenguaje objeto, adems de informar de errores en el proceso.
Programa Fuente
Compilador
Programa Objeto
Mensajes de error Existe una gran cantidad de lenguajes de programacin, al igual tambin existe una gran cantidad de lenguajes objeto pueden ser otro lenguaje de programacin o incluso lenguaje mquina. Los compiladores generalmente se clasifican en compiladores de pasada, mltiples pasadas, ejecucin, depuracin u optimizacin, sin importar el tipo, todos realizan las mismas tareas especficas. Al comprender estas tareas se pueden crear compiladores para una gran cantidad de lenguajes de lenguaje fuente y maquinas objeto utilizando las mismas tcnicas base.
Muchas herramientas de software que manipulan programas fuente realizan algn tipo de anlisis primero, algunos ejemplos son: Editores de estructuras.- Toma como entrada una secuencia de rdenes para construir un programa fuente, analiza el texto del programa, imponindolo a una estructura jerrquica apropiada, de esta forma puede realizar tareas adicionales tiles para la preparacin de programas, adems la salida del editor suele ser similar a la salida de la fase de anlisis de un compilador. Impresoras estticas.-Analiza un programa y lo imprime de forma que la estructura del programa resulte claramente visible. Verificadores estticos.- lee un programa, lo analiza y detecta los posibles errores sin ejecutar el programa, puede detectar si hay partes de un programa que no se lograran ejecutar o si una variable se trata de utilizar sin ser definida, adems de detectar errores lgicos como tratar de usar una variable real como apuntador. Intrpretes.- en lugar de producir un programa objeto como resultado de una traduccin, realiza las operaciones que implica un programa fuente, muchas veces se utilizan para ejecutar lenguajes de rdenes, pues cada operador que se ejecuta en un lenguaje de rdenes suele ser una invocacin de una rutina compleja como un editor o un compilador. Tradicionalmente se concibe a un compilador como un programa que traduce un programa fuente, sin embargo hay otros procesos que funcionan de una forma similar a un compilador, por ejemplo: y y y Formadores de textos Compiladores de circuitos de silicio Intrpretes de consultas.
El contexto de un compilador
Adems de un compilador se pueden necesitar otros programas para crear un programa objeto ejecutable. Un programa se puede dividir en mdulos almacenados en archivos distintos, la labor de reunir el programa fuente se le asigna a otro programa conocido como preprocesador.
Anlisisjerrquico.- en el que los caracteres o los componentes lxicos se agrupan jerrquicamente en colecciones anidadas con un significado colectivo. AnlisisSemntico.- en el que se realizan ciertas revisiones para asegurar que los componentes de un programa se ajustan de un modo significativo.
Anlisis lxico
En un compilador al anlisis lineal se le conoce como anlisis lxico. Ejemplo: Posicin = inicial + velocidad * 60
Se agruparan de la siguiente forma: y y y y y y y Identificador posicin El smbolo de asignacin = El identificador inicial El signo de suma El identificador velocidad El signo de multiplicacin El numero 60
Anlisis sintctico
El anlisis jerrquico se denomina anlisis sintctico. Este implica agrupar los componentes lxicos del programa fuente en frases gramaticales que puedan ser comprendidas por el compilador para sintetizar la salida. La estructura jerrquica de un programa se expresa utilizando reglas recursivas, por ejemplo: y y y Cualquier identificador es una expresin. Cualquier nmero es una expresin. Si la expresin1 y la expresin2 son expresiones entonces su suma y su producto son expresiones.
En este caso la tercera regla es recursiva. La divisin entre anlisis lxico y anlisis sintctico es algo arbitraria. Generalmente se elige una divisin que simplifique la tarea completa del anlisis. Un factor para determinar esta divisin es si una construccin del lenguaje fuente es inherentemente recursiva. Las construcciones lxicas no requieren recursin, mientras que las sintcticas suelen requerirla.
Anlisis semntico
En esta fase se revisa el programa fuente para tratar de encontrar errores semnticos y rene la informacin sobre los tipos para la fase posterior de generacin de cdigo.En ella se utiliza la estructura jerrquica determinada por la fase de anlisis sintctico para identificar los operadores y operando de expresiones y proposiciones. Durante la verificacin de tipos se verifica si cada operador tiene operando permitidos por la especificacin del lenguaje fuente.
Optimizacin de cdigo
La fase de optimizacin de cdigo trata de mejorar el cdigo intermedio, de modo que resulte un cdigo maquina ms rpido de ejecutar.
Generacin de cdigo
La fase final de un compilador es la generacin de cdigo objeto, que por lo general consiste en cdigo maquina relocalizarle o ensamblador. Las posiciones de memoria se seleccionan para cada una de las variables usadas por el programa. Despus cada una de las instrucciones intermedias se traduce a una secuencia de instrucciones de mquina que ejecuta la misma tarea.
Preprocesadores
Producen la entrada para un compilador, y pueden realizar las siguientes funciones: Procesamiento de macros.- puede permitir al usuario definir macros, que son abreviaturas de construcciones ms grandes. Inclusin de archivos.- Puede ingresar archivos de encabezamiento en el texto del programa. Preprocesadores Racionales .- enriquecen lenguajes antiguos con recursos ms modernos de flujo de control y de estructuras de datos. Extensiones a lenguajes.- Tratan de crear posibilidades al lenguaje que equivalen a macros incorporadas. Los procesadores de macros tratan dos clases de proposiciones: definicin y uso de macros, las definiciones normalmente se indican con algn carcter exclusivo.
Ensambladores
Algunos compiladores producen cdigo ensamblador, otros realizan el trabajo del ensamblador, produciendo cdigo de maquina relocalizarle que se puede pasar directamente al editor de carga y enlace. El cdigo ensamblador es una versin mnemotcnica del cdigo de mquina, donde se usan nombres en lugar de cdigos binarios para operaciones, y tambin se usan nombres para las direcciones de memoria. Es comn que los lenguajes ensambladores tengan recursos para manejar macros que son similares a las consideradas antes para los procesos de macros.