Compiladores
UNIVERSIDAD DE CANTABRIA
Introducción a la tecnología de compiladores
GRUPO DE COMPUTADORES Y TIEMPO REAL
4
© Javier Gutiérrez, Michael González
24/nov/08
1
FACULTAD DE CIENCIAS
Notas:
UNIVERSIDAD DE CANTABRIA
1. Compiladores 2. Análisis léxico 3. Análisis sintáctico 4. Conclusión
GRUPO DE COMPUTADORES Y TIEMPO REAL FACULTAD DECIENCIAS
© Javier Gutiérrez, Michael González
24/nov/08
2
1. Compiladores
UNIVERSIDAD DE CANTABRIA
“Un compilador es un programa que lee un programa escrito en un lenguaje, y lo traduce a un programa equivalente en otro lenguaje.” programa en lenguaje fuente programa en lenguaje destino
compilador
mensajes de error Durante la traducción el compilador informa de la presenciade errores en el programa fuente.
GRUPO DE COMPUTADORES Y TIEMPO REAL FACULTAD DE CIENCIAS
© Javier Gutiérrez, Michael González
24/nov/08
3
Notas:
UNIVERSIDAD DE CANTABRIA
Existen multitud de compiladores para un gran número de lenguajes fuente y lenguajes destino. Los compiladores se utilizan tanto para lenguajes de programación tradicionales, como Fortran, C o Ada, o paraaplicaciones especializadas como por ejemplo lenguajes de descripción de hardware, lenguajes de programación de robots, etc. Los primeros compiladores aparecieron a primeros de los años 50, como resultado de proyectos para la traducción de fórmulas aritméticas en código máquina. Los primeros compiladores eran costosos de implementar. Hoy en día existen técnicas sistemáticas para construir compiladores quehacen más sencillo el proceso.
GRUPO DE COMPUTADORES Y TIEMPO REAL FACULTAD DE CIENCIAS
© Javier Gutiérrez, Michael González
24/nov/08
4
Análisis y síntesis
Compilación
UNIVERSIDAD DE CANTABRIA
Análisis
Síntesis
Léxico: “tokens”
Sintáctico: instrucciones
Semántico: significado
Generación de código
GRUPO DE COMPUTADORES Y TIEMPO REAL FACULTAD DE CIENCIAS
©Javier Gutiérrez, Michael González
24/nov/08
5
Notas:
UNIVERSIDAD DE CANTABRIA
Existen dos partes importantes en la compilación: • Etapa de análisis: Parte el programa fuente en sus piezas constituyentes y crea una representación intermedia del mismo. - Análisis léxico: separación de cada elemento componente del programa (“token”) - Análisis sintáctico: separación de cada instrucción osentencia del lenguaje, que agrupa varios componentes léxicos o “tokens”. - Análisis semántico: Se revisa el programa fuente para comprobar que las reglas semánticas del lenguaje (aquellas relativas al significado de las distintas instrucciones) se cumplen. Un ejemplo de regla semántica es la comprobación de tipos en las expresiones. • Etapa de síntesis: Construye el programa destino deseado apartir de una descripción en un lenguaje de representación intermedia. De las dos partes de la compilación, la síntesis es la que requiere las técnicas más especializadas, aunque en los lenguajes de programación modernos (Ada, C++, Java) la parte de análisis está alcanzando una gran complejidad. Durante la fase de análisis la estructura del programa se guarda en una estructura de datos especial quesuele ser un árbol: el árbol sintáctico.
GRUPO DE COMPUTADORES Y TIEMPO REAL FACULTAD DE CIENCIAS
© Javier Gutiérrez, Michael González
24/nov/08
6
Análisis y síntesis (cont.)
UNIVERSIDAD DE CANTABRIA
Algunas herramientas presentan también una etapa de análisis: - Editores orientados al lenguaje - Impresión con formato (“pretty printer”) - Comprobadores estáticos de programas -Intérpretes
GRUPO DE COMPUTADORES Y TIEMPO REAL FACULTAD DE CIENCIAS
© Javier Gutiérrez, Michael González
24/nov/08
7
Notas:
UNIVERSIDAD DE CANTABRIA
La etapa de análisis se encuentra en muchas herramientas además de los compiladores: • Editores orientados al lenguaje: Además de facilitar la introducción de texto por el teclado analiza el programa fuente y proporciona la...
Regístrate para leer el documento completo.