P. 1
Compiladores E Intérpretes

Compiladores E Intérpretes

|Views: 1.547|Likes:
Publicado porFredy Rendón Díaz

More info:

Published by: Fredy Rendón Díaz on Feb 20, 2011
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as DOCX, PDF, TXT or read online from Scribd
See more
See less

07/29/2013

pdf

text

original

Compiladores e intérpretes.

INTRODUCCION En este documento hablaremos sobre los compiladores de programación a si como los intérpretes ya que son muy importantes y fundamentales para la programación ya que sin la ayuda de ellos el programar sería muy difícil y gracias a estos la programación se ha facilitado enormemente. El compilador nos ayuda a traducir lenguajes de alto nivel a un lenguaje mejor conocido como lenguaje maquina por lo tanto nos ayuda a traducir la mayor parte de la programación porqu e de lo contrario tendríamos que programar a lenguaje maquina. Este también nos ayuda a depurar o más bien a limpiar errores que haya a la hora de programar los programas que son compatibles para este tipo de de compilador son: java, c++,c#, pascal entre otros. Interprete es el programa que utiliza el compilador para que juntos hagan una buena programación sea cual sea el programa el interprete por una parte trabaja a menos velocidad que el compilador esto es porque solo es la ayuda para que los programas no tengan muchos errores a la hora de ejecutarlos. Los intérpretes son muy importantes en la vida de la progracion ya que hace que el compilador no marque errores a la hora de ejecutar el programa también tiene un defecto que nos hace más lenta la ejecución del programa ya que verifica los errores que hay para corregirlos en algunas ocasiones.

Compiladores Un compilador es un programa que traduce los programas fuente escritos en lenguaje de alto nivel a lenguaje máquina. La traducción del programa completo se realiza en una sola operación denominada compilación del programa; es decir, se traducen todas las instrucciones del programa en un solo bloque. Compilador programa fuente mensaje de error El programa compilado y depurado (eliminados los errores del código fuente) se denomina programa ejecutable porque ya se puede ejecutar directamente y cuantas veces se desee; sólo deberá volver a compilarse de nuevo en el caso de que se modifique alguna instrucción del programa. De este modo el programa ejecutable no necesita del compilador para su ejecución. Los lenguajes compiladores típicos más utilizados son: C, C++, Java, C#, Pascal, FORTRAN y COBOL. Programa objeto

la diferencia con un compilador es que la salida es una ejecución. 5. Obtención del programa objeto. Ej:Basic. se tendrá la salida del programa. La compilación La compilación es el proceso de traducción de programas fuente a programas objeto. Escritura del programa fuente con un editor (programa que permite a una computadora actuar de modo similar a una máquina de escribir electrónica) y guardarlo en un dispositivo de almacenamiento (por ejemplo. LISP. necesito para su implicación 18 años de trabajo en grupo (Backus y otro 1975 ). Se ejecuta el programa y. Introducir el programa fuente en memoria. El enlazador (linker) obtiene el programa ejecutable. La entrada es un archivo en un lenguaje de alto nivel. por ejemplo. 3. se considero a los compiladores como programas notableme difíciles nte de escribir. en tornos de programación y herramientas de software. Verificar y corregir errores de compilación (listado de errores). También se han desarrollado buenos lenguajes de implantación. Para conseguir el programa máquina real se debe utilizar un programa llamado montador o enlazador (linker). 7. puede hacerse un compilador real incluso como proyecto de estudios en un curso de un semestre sobre diseño de compiladores. 2. 4. si no existen errores. Compilar el programa con el compilador C. PROLOG son interpretados Ventaja: fácil depuración Desventaja: lentitud y consumo de recursos (pues el Intérprete ocupa tiempo y memoria) . Con estos avances. 6. El primer compilador de FORTRAN.En la década de 1950. Desde entonces se han descubierto técnicas sistemáticas para manejar muchas de las importancias tarea que surgen en la compilación. El programa objeto obtenido de la compilación ha sido traducido normalmente a código máquina. un disco). Programa fuente Manejador de errores Analizador Léxico Analizador Semántico Analizador Sintáctico Optimador de código Generador de código intermedio Administrador de la tabla de símbolos Generador de códigos Programa objetivo Intérprete: Ejecuta una a una las instrucciones de un programa de alto nivel. El proceso de montaje conduce a un programa en lenguaje máquina directamente ejecutable El proceso de ejecución de un programa escrito en un lenguaje de programación y mediante un compilador suele tener los siguientes pasos: 1.

por eso la interpretación puede ser más lenta que la ejecución de un programa compilado. ya que el análisis del lenguaje fuente se hace una sola vez. se llaman interpretativos. Los lenguajes que incluyen este tipo de operadores y que. etc. Usando un compilador. sin necesidad de volver a comenzar la ejecución. durante la generación del programa equivalente. una PC y un PlayStation 3). que traduce las frases que oye sobre la marcha. UCSD Pascal y Java). como por ejemplo ejecutar código contenido en una variable en forma de cadenas de caracteres. sintáctico y verificación de tipos son exactamente los mismos que en un compilador. el programa puede modificarse sobre la marcha. Perl. pero a cambio son más flexibles como entornos de programación y depuración (lo que se traduce.). Algunos aceptan los archivos fuente guardados en esta representación intermedia (ej. Intérpretes y compiladores tienen diversas ventajas e inconvenientes que los hacen complementarios El intérprete difiere del compilador en que ejecuta cada orden una vez que se traduce.Un compilador suele generar programas más rápidos y eficientes. sin generar ningún código equivalente. MATLAB. Python. y Ruby). Un intérprete puede necesitar evaluar la misma parte del árbol sintáctico varias veces (por ejemplo cuando se hacen ciclos). Además. típicamente. un intérprete se ve obligado generalmente a analizar cada instrucción tantas veces como se ejecute (incluso miles o millones de veces). intérprete o interpretador es un programa informático capaz de analizar y ejecutar otros programas. sin producir ningún escrito permanente. exigen un intérprete. Los intérpretes se diferencian de los compiladores en que mientras estos traducen un programa desde su descripción en un lenguaje de programación al código de máquina del sistema. y normalmente no guardan el resultado de dicha traducción. Python. Intérprete que analiza el programa fuente y lo ejecuta directamente. y permiten ofrecer al programa interpretado un entorno no dependiente de la máquina donde se ejecuta el intérprete. que permiten el uso de un compilador. este tipo de instrucciones es imposible de tratar por medio de compiladores. Pero escribir un intérprete es más fácil de mover a una . Los lenguajes compilativos. INTERPRETE En ciencias de la computación. Este proceso puede hacer más lenta la ejecución del programa. pues la ejecución de un programa puede interrumpirse en cualquier momento para estudiar el entorno (valores de las variables. Su acción equivale a la de un intérprete humano. un solo archivo fuente puede producir resultados iguales incluso en sistemas sumamente diferentes (ej. por ejemplo. algunas implementaciones de programación de lenguajes de programación pueden interpretar o compilar el código fuente original en una más compacta forma intermedia y después traducir eso al código de máquina (ej. Para mejorar el desempeño. Un intérprete es otra manera de implementar un lenguaje de programación. Los programas interpretados suelen ser más lentos que los compilados debido a la necesidad de traducir el programa mientras se ejecuta. En cambio. sino del propio intérprete (lo que se conoce comúnmente como máquina virtual). Usando un intérprete. prescinden de este tipo de operadores.. Un intérprete permite utilizar funciones y operadores más potentes. La interpretación comparte muchos aspectos con el compilador. Un intérprete facilita la búsqueda de errores. los primeros (los intérpretes) sólo realizan la traducción a medida que sea necesaria. un solo archivo fuente puede producir resultados iguales solo si es compilado a distintos ejecutables específicos a cada sistema. por tanto. así que los intérpretes se utilizan menos que los compiladores. Usualmente. en una mayor facilidad para reemplazar partes enteras del programa o añadir módulos completamente nuevos). Los análisis léxico. escritos en un lenguaje de alto nivel. instrucción por instrucción.

A la secuencia de caracteres que representa un componente léxico se le llama lexema (o con su nombre en inglés token). Análisis Léxico. cuando se ejecute. . Cada componente léxico es una secuencia lógicamente coherente de caracteres relativa a un identificador. Generación de código Intermedio. En ella se genera el código objeto que por lo general consiste en código en lenguaje máquina (código relocalizable) o código en lenguaje ensamblador. La siguiente figura representa los componentes en que se divide un compilador.máquina diferente. Esta representación intermedia debe tener dos propiedades importantes: debe ser fácil de producir y fácil de traducir al programa objeto. lo mejor es utilizar un intérprete. Optimización de Código. El registro incluye los campos para los atributos del identificador. Generación de Código. realizara correctamente las actividades descritas en el programa fuente. Para el estudio de un compilador. un operador o un carácter de puntuación. de modo que resulte un código de máquina más rápido de ejecutar. Cada fase representa una transformación al código fuente para obtener el código objeto. los componentes léxicos se agrupan en frases gramaticales que el compilador utiliza para sintetizar la salida. En esta fase se trata de mejorar el código intermedio. En la fase de análisis léxico se leen los caracteres del programa fuente y se agrupan en cadenas que representan los componentes léxicos. y si son compatibles entre sí. En cada una de las fases se utiliza un administrador de la tabla de símbolos y un manejador de errores. en cada una de las etapas de compilación de un programa. Fases de un compilador Estructura de un Compilador. Análisis Sintáctico. Se puede considerar esta operación intermedia como un subprograma para una máquina abstracta. Es conveniente que el tratamiento de los errores se haga de manera centralizada a través de un manejador de errores. Una tabla de símbolos es una estructura de datos que contiene un registro por cada identificador. De esta forma podrán controlarse más eficientemente los errores encontrados en cada una de las fases de la compilación de un programa. En cada fase del proceso de compilación es posibles encontrar errores. determina el tipo de los resultados intermedios. Análisis Semántico. Las tres primeras fases realizan la tarea de análisis. comprobar que los argumentos que tienen un operador pertenecen al conjunto de operadores posible. sino que se genera otro lexema en la tabla de símbolos. Algunos compiladores generan una representación intermedia explícita del programa fuente. El administrador de la tabla de símbolos se encarga de manejar los accesos a la tabla de símbolos. Esta constituye la fase final de un compilador. así que para aplicaciones donde la velocidad no importa. Cualquier compilador debe realizar dos tareas principales: análisis del programa a compilar y síntesis de un programa en lenguaje maquina que. pero que no tengan significado para la operación implicada. Administrador de la tabla de símbolos. una vez que se han realizado las fases de análisis. una palabra reservada. En esta fase. es necesario dividir su trabajo en fases. La fase de análisis semántico se intenta detectar instrucciones que tengan la estructura sintáctica correcta. Análisis Semántico: Este análisis es más difícil de formalizar. y las demás la síntesis. En el caso de los identificadores creados por el programador no solo se genera un componente léxico. Manejador de errores.

un buen compilador es capaz de detectar errores y optimizar el código generado. Aumentan la portabilidad del lenguaje: Para que el lenguaje interpretado funcione en otra máquina sólo es necesario que su intérprete funcione en dicha máquina. en los que se puede obtener el código fuente a medida que se necesita. Un programa puede manipular su propio código fuente a medida que se ejecuta. los sistemas interpretados suelen ser menos eficientes que los compilados. la eficiencia es un problema menos grave y muchas veces se prefieren sistemas que permitan un desarrollo rápido de aplicaciones que cumplan fielmente la tarea encomendada. Prolog. Esto permite su utilización en sistemas de poca memoria o en entornos de red. Esto es debido a que durante la ejecución de código compilado no es necesario realizar complejos análisis (ya se hicieron en tiempo de compilación). Muchos lenguajes como Lisp. Los intérpretes. lo cual imposibilita tales optimizaciones.Ventajas de la utilización de intérpretes En general. potencian la utilización de sistemas interactivos y facilitan las tareas de depuración. Actualmente. Puesto que no existen etapas intermedias de compilación. APL. surgieron en primer lugar como sistemas interpretados y posteriormente surgieron compiladores. . en general. la utilización de compiladores permite construir programas más eficientes que los correspondientes interpretados. Lo cual facilita el estudio de la corrección del intérprete y proporciona nuevas líneas de investigación como la generación automática de intérpretes a partir de las especificaciones semánticas del lenguaje. A continuación se enumeran una serie de ventajas de los sistemas interpretados. No obstante. además. Proporcionan una mayor flexibilidad que permite modificar y ampliar características del lenguaje fuente. No es necesario contener en memoria todo el código fuente. Facilitan la meta-programación. los nuevos avances informáticos aumentan la velocidad de procesamiento y capacidad de memoria de los ordenadores. Esto facilita la implementación de sistemas de aprendizaje automatizado y reflectividad. realizan la fase de análisis y ejecución a la vez. son más sencillos de implementar. etc. por definición. Por esta razón. los sistemas interpretados facilitan el desarrollo rápido de prototipos. Los intérpretes.

You're Reading a Free Preview

Descarga
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->