Analizador Lexico (Compiladores)
UNIVERSIDAD DE CANTABRIA
Introducción a la tecnología de compiladores
GRUPO DE COMPUTADORES Y TIEMPO REAL
4
© Michael González Harbour
23/ene/04
1
DPTO. DE ELECTRÓNICA Y COMPUTADORES
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 DPTO.DE ELECTRÓNICA Y COMPUTADORES
© Michael González Harbour
23/ene/04
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 lapresencia de errores en el programa fuente.
GRUPO DE COMPUTADORES Y TIEMPO REAL DPTO. DE ELECTRÓNICA Y COMPUTADORES
© Michael González Harbour
23/ene/04
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 para aplicaciones 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 construircompiladores que hacen más sencillo el proceso.
GRUPO DE COMPUTADORES Y TIEMPO REAL DPTO. DE ELECTRÓNICA Y COMPUTADORES
© Michael González Harbour
23/ene/04
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 DPTO.DE ELECTRÓNICA Y COMPUTADORES
© Michael González Harbour
23/ene/04
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 o sentencia 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 elprograma destino deseado a partir 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 unaestructura de datos especial que suele ser un árbol: el árbol sintáctico.
GRUPO DE COMPUTADORES Y TIEMPO REAL DPTO. DE ELECTRÓNICA Y COMPUTADORES
© Michael González Harbour
23/ene/04
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 DPTO. DE ELECTRÓNICA Y COMPUTADORES
© Michael González Harbour
23/ene/04
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...
Regístrate para leer el documento completo.