Compiladores

12

Click here to load reader

Transcript of Compiladores

Page 1: Compiladores

CompiladorCompilador

Es un traductor que convierte un Es un traductor que convierte un texto escrito en un lenguaje fuente texto escrito en un lenguaje fuente de alto nivel en un programa objeto de alto nivel en un programa objeto en código máquinaen código máquina..

Page 2: Compiladores

Intérprete Intérprete Es un traductor que realiza la operación de Es un traductor que realiza la operación de

compilación paso a paso. Para cada compilación paso a paso. Para cada sentencia que compone el texto de entrada, sentencia que compone el texto de entrada, se realiza una traducción, ejecuta dicha se realiza una traducción, ejecuta dicha sentencia y vuelve a iniciar el proceso con la sentencia y vuelve a iniciar el proceso con la sentencia siguiente. La principal ventaja del sentencia siguiente. La principal ventaja del proceso de compilación frente al de proceso de compilación frente al de interpretación es que los programas se interpretación es que los programas se ejecutan mucho más rápidamente una vez ejecutan mucho más rápidamente una vez compilados; por el contrario, es más cómodo compilados; por el contrario, es más cómodo desarrollar un programa mediante un desarrollar un programa mediante un intérprete que mediante un compilador puesto intérprete que mediante un compilador puesto que en el intérprete las fases de edición y que en el intérprete las fases de edición y ejecución están más integradas. ejecución están más integradas.

Page 3: Compiladores

La depuración de los programas La depuración de los programas suele ser más fácil en los intérpretes suele ser más fácil en los intérpretes que en los compiladores puesto que que en los compiladores puesto que el código fuente está presente el código fuente está presente durante la ejecución. Estas ventajas durante la ejecución. Estas ventajas pueden incorporarse al compilador pueden incorporarse al compilador mediante la utilización de entornos de mediante la utilización de entornos de desarrollo y depuradores simbólicos desarrollo y depuradores simbólicos en tiempo de ejecución.en tiempo de ejecución.

Page 4: Compiladores

TraductorTraductor

Es una máquina teórica que tiene como Es una máquina teórica que tiene como entrada un texto escrito en un lenguaje L1 entrada un texto escrito en un lenguaje L1 y como salida un texto escrito en un y como salida un texto escrito en un lenguaje L2. Habitualmente se denomina lenguaje L2. Habitualmente se denomina a L1 a L1 lenguaje fuentelenguaje fuente y a L2 y a L2 lenguaje lenguaje objetoobjeto..

Page 5: Compiladores

Fases de un CompiladorFases de un Compilador

Análisis Léxico:Análisis Léxico: Esta fase se encarga Esta fase se encarga de verificar si todas las cadenas de verificar si todas las cadenas pertenecen o no al lenguaje. Es decir pertenecen o no al lenguaje. Es decir realiza un análisis símbolo por símbolo realiza un análisis símbolo por símbolo indicando el token por cada uno de los indicando el token por cada uno de los elementos reconocidos o el error en caso elementos reconocidos o el error en caso de no reconocer. Este análisis no logra de no reconocer. Este análisis no logra detectar muchos errores por su detectar muchos errores por su característica.característica.

Page 6: Compiladores

Ejemplo:Ejemplo: total=valor*5total=valor*5 Luego del análisis Luego del análisis

léxico:léxico: id = id * numid = id * num

Page 7: Compiladores

Análisis SintácticoAnálisis Sintáctico

En esta fase se analiza la estructura de En esta fase se analiza la estructura de las expresiones en base a gramáticas. las expresiones en base a gramáticas. Aqui ya se puede determinar si una Aqui ya se puede determinar si una extructura por ejemplo una expresión extructura por ejemplo una expresión matemática mal formada. El análisis que matemática mal formada. El análisis que se realiza es jerárquico es decir en base se realiza es jerárquico es decir en base a árboles de derivación que se obtienen a árboles de derivación que se obtienen de las mismas gramáticas. Ejemplo: de las mismas gramáticas. Ejemplo: position:=initial + rate*60 position:=initial + rate*60

Page 8: Compiladores

Análisis SemánticoAnálisis Semántico

Este análisis es más dificil de formalizar, Este análisis es más dificil de formalizar, determina el tipo de los resultados determina el tipo de los resultados intermedios, comprobar que los intermedios, comprobar que los argumentos que tienen un operador argumentos que tienen un operador pertenecen al conjunto de operadores pertenecen al conjunto de operadores posible, y si son compatibles entre sì. posible, y si son compatibles entre sì.

Page 9: Compiladores

Generación de Código Generación de Código IntermedioIntermedio El código intermedio es una El código intermedio es una

representación en base a elementos de representación en base a elementos de 3 y 4 direcciones. Lo que nos permite 3 y 4 direcciones. Lo que nos permite llegar a la fase de optimizaciòn de llegar a la fase de optimizaciòn de código. código.

a=b+c1: + b c T12: = a T1

Page 10: Compiladores

Optimización de CódigoOptimización de Código

Consiste en realizar uuna mejora en el Consiste en realizar uuna mejora en el código intermedio, para reducir el código intermedio, para reducir el número de líneas y hacer que la número de líneas y hacer que la ejecución sea más rápida ejecución sea más rápida

a=b+c1: + b c a

Page 11: Compiladores

Generación de CódigoGeneración de Código

Llegamos a la generación de código Llegamos a la generación de código ensamblador o código máquina del ensamblador o código máquina del procesador que nos interese por procesador que nos interese por ejemplo: ejemplo:

a:=b+cLOAD BADD CSTORE A

Page 12: Compiladores

Herramientas Herramientas

A continuación se muestran algunas de A continuación se muestran algunas de las herramientas disponibles que pueden las herramientas disponibles que pueden utilizarse para la realización del utilizarse para la realización del ProyectoProyectode de CompiladoresCompiladores