Universidad de San Carlos de Guatemala

Organización de lenguajes y compiladores 1 Sección C Julio Alan Fernando Vidaurre Farfán 2005 - 17857 Estructura del proceso de compilación Las fases del compilador se separan en dos grupos, fase de análisis (back end) y fase de síntesis (front end). El objetivo de la fase de análisis se encarga del manejo de errores y su salida se utiliza para la fase de síntesis, que en términos generales se encarga de optimizar el código de entrada y generar código ensamblador o máquina. Analizador léxico También llamado escáner, lee carácter por carácter del programa origen, validando las entradas para aceptar solo los que son válidos en el lenguaje. La segunda tarea del escáner es agrupar los caracteres en sentencias o grupos de elementos llamados tokens o elementos léxicos. Otra de las tareas es el eliminar los comentarios, inclusión de ficheros, contabilizar el número de líneas y columnas para el manejo de errores. Analizador sintáctico En esta fase el compilador verifica la entrada de tokens en base a una gramática definida, para suministrar el árbol sintáctico que lo reconoce. También accede a la tabla de símbolos para iniciar el trabajo del analizador semántico, así como el chequeo de tipos y por supuesto el manejo de errores Analizador semántico “La semántica corresponde al significado asociado a las estructuras formales (sintaxis) del lenguaje” esto quiere decir que el analizador semántico se encarga de manejar la estructura y su significado del árbol sintáctico. Una de las tareas de esta fase es la verificación de los tipos, esta se puede hacer de forma dinámica (en tiempo de ejecución) o estática (en tiempo de compilación), también verifica la compatibilidad entre un operador y sus operandos, duplicidad de nombres y flujo de control. Generación de código intermedio La tarea de síntesis puede comenzar con la generación de código intermedio. Este no es un lenguaje de programación especifico sino corresponde a una maquina abstracta, que se debe definir lo más general posible. Esta fase permite crear fácilmente un compilador para diferentes maquinas.

genera una salida en código máquina. estos son lenguajes de bajo nivel es decir secuencias de 0 y 1.Universidad de San Carlos de Guatemala Organización de lenguajes y compiladores 1 Sección C Julio Alan Fernando Vidaurre Farfán 2005 . . este es la segunda generación de los lenguajes.17857 Optimización de código El objetivo principal de esta fase es obtener código que se ejecute más eficientemente en tiempo de ejecución y espacio de memoria utilizado. este código se crea en lenguaje máquina. No siempre se genera código máquina. Generación de código objeto En esta fase el compilador en base del código optimizado. en ciertos compiladores el código objeto corresponde a código ensamblador. En esta fase se revisa el código generado a varios niveles de abstracción y realiza la optimización en cada nivel.