Compiladores: Definición
Compiladores: Clasificación Como fueron construidos:
De una pasada De múltiples pasadas De carga y ejecución.
Función que realizan: De depuración o de optimización.
Las Fases del Compilador
Agrupamiento de Fases (1/2) Etapa Inicial (de análisis ó front-end):
incluye fases que dependen principalmente del lenguaje fuente Análisis Léxico Análisis Sintáctico Creación de la tabla de símbolos Análisis Semántico Generación de código intermedio
Agrupamiento de Fases (2/2) Etapa Final (síntesis ó back-end):
incluye las fases que dependen del lenguaje intermedio y la maquina objeto. Optimización de Código Generación de Código Manejo de Errores Operaciones con la tabla de símbolos
Fases
Análisis léxico, la cadena de caracteres que constituye el programa fuente y los agrupa en secuencias significativas (lexemas). Para cada lexema el analizador produce como salida un token.
Análisis sintáctico, utiliza los tokens producidos por el analizador léxico para crear una representación intermedia en forma de árbol que describa la estructura gramatical del flujo de tokens.
Fases
Análisis semántico, utiliza el árbol y tabla de símbolos para comprobar la consistencia semántica del programa fuente con la definición del lenguaje.
Generación de código intermedio: Entrega una representación intermedia (código de tres direcciones) que la podemos considerar como un programa para una máquina abstracta
Fases
Optimización de código, Independiente de la maquina virtual trata de mejorar el código intermedio de manera que se produzca un código destino más eficiente.
Generación de código: Recibe la representación intermedia y la transforma al lenguaje destino. Primero asigna las direcciones de memoria de c/u de las variables y luego traduce las instrucciones intermedias en secuencias de instrucciones de máquina que realizan la misma tarea.
Por Ejemplo:
Analicemos la siguiente cadena:
Posición := inicial + velocidad * 60
Análisis léxico
Componentes léxicos: Identificadores: posición, inicial,
velocidad Símbolos: (:=), (+), (*). Número: 60
Los espacios en blanco que separan a los componentes léxicos se eliminan
Análisis sintáctico: Árbol Sintáctico
:= / \ id1 + / \ id2 * / \ id3 60
Análisis semántico
Utiliza el árbol sintáctico para identificar operadores, operando de expresiones y proposiciones.
Otra parte importante es la verificación de tipos de cada operador.
¿Qué pasaría si todos los identificadores del ejemplo fueran de tipo real?
Pasadas
Las actividades de varias fases se pueden agrupar en una sola pasada. 1era. Pasada, fases de análisis 2da. Pasada, Optimización de Código
(Opcional). 3ra. Pasada, Generación del código para
una máquina destino específica.
Reducción del número de pasadas Pocas pasadas debido al tiempo de
lectura y escritura de archivos intermedios.
Si se agrupan muchas fases dentro de una pasada, puede ser necesario tener todo el programa en memoria; debido a que alguna fase puede necesitar información.
Herramientas de Construcción de Compiladores.- Características Herramientas que utilizan lenguajes
especializados para especificar e implementar componentes específicos.
Las más exitosas son la que ocultan los detalles del algoritmo de generación y producen componentes que se integran fácilmente al resto del compilador
Herramientas de Construcción de Compiladores
Generadores de escaners.- Producen analizadores de léxicos a partir de una descripción de tokens de un lenguaje utilizando expresiones regulares.
Generadores de analizadores sintácticos (parsers).- Producen analizadores sintácticos a partir de la gramática del lenguaje de programación.
Motores de traducción orientados a la sintaxis.- Producen rutinas para recorrer árboles sintácticos y generar código intermedio
Herramientas de Construcción de Compiladores Generadores de generadores de código.- Producen un generador de código a partir de una colección de reglas para traducir cada operación del lenguaje intermedio en lenguaje de máquina.
Motores de análisis de flujo de datos.- Analizan el flujo de información en un programa. Es vital para la optimización de código
Top Related