Fundamentos de Compiladores y Procesamiento de Lenguajes de Programación
Clasificado en Informática
Escrito el en
español con un tamaño de 3,65 KB
Introducción a los Compiladores e Intérpretes
- Compilador: Es un programa que recibe código fuente y genera como salida un conjunto de instrucciones escritas en el lenguaje binario.
- Diferencia entre compilador e intérprete:
- Compilador: Analiza el programa fuente y lo traduce a otro equivalente escrito en lenguaje máquina.
- Intérprete: Analiza el programa fuente y lo ejecuta directamente sin generar ningún otro código.
- Ventajas de compilador e intérprete:
- Intérprete: Facilita la búsqueda de errores.
- Compilador: Entrega programas más rápidos y eficientes.
- Compilador source-to-source: Es un tipo de compilador que toma el código fuente de un lenguaje y entrega código en otro lenguaje.
Procesos de Traducción y Ensamblado
Tareas de un Ensamblador
Un ensamblador necesita realizar, entre otras, las siguientes tareas:
- Convertir los códigos a su código equivalente.
- Convertir operandos simbólicos en las direcciones correspondientes.
- Construir las instrucciones finales.
Fases del Proceso de Compilación (Tabla del Analizador)
El flujo de procesamiento de un programa sigue esta secuencia:
- Programa fuente con directivas.
- Preprocesador.
- Programa fuente.
- Analizador léxico.
- Analizador sintáctico.
- Analizador semántico.
- Generador de código.
- Optimización.
Durante este proceso, se interactúa de forma transversal con:
- Lado izquierdo: Tabla de símbolos.
- Lado derecho: Manejador de errores.
Análisis de Código y Componentes Léxicos
- Código fuente: Es un conjunto de instrucciones de líneas de texto que representan las órdenes que debe seguir la computadora.
- Analizador léxico: Lee el código fuente, carácter a carácter, y construye a partir de este unas entidades primarias llamadas tokens e identifica a todos los que se encuentran.
- Componentes léxicos: Conjunto de cadenas de entrada que produce como salida el mismo componente léxico.
- Token: Símbolo abstracto que representa a un tipo de unidad léxica.
- Patrón: Descripción de la forma que pueden tomar los lexemas de un token.
- Lexema: Secuencia de caracteres en el programa fuente que coincide con el patrón para un token y que el analizador léxico identifica como parte de ese token.
- No determinista: Significa que, en un estado, se puede dar el caso de tener más de una transición para el mismo símbolo de entrada.
Análisis Sintáctico, Semántico y Herramientas
- Análisis semántico: Utiliza el árbol sintáctico para comprobar restricciones de tipo de dato y otras limitaciones semánticas.
- Análisis sintáctico: Su función es comprobar que la secuencia de componentes léxicos cumple las reglas de la gramática y generar el árbol sintáctico.
- Gramática: Son especificaciones sintácticas precisas de un lenguaje.
- Yacc: Es una herramienta diseñada para generar analizadores sintácticos de manera automática.