- Detalles
¿Qué es un compilador?
Un compilador es un programa informático que le ayuda a convertir el código fuente escrito en un lenguaje de alto nivel en un lenguaje de máquina de bajo nivel. Traduce el código escrito en un lenguaje de programación a otro sin cambiar el significado del código. El compilador también realiza el código final efectivo que está optimizado para el tiempo de ejecución y el espacio de memoria.
El proceso de compilación incluye mecanismos básicos de traducción y detección de errores. El proceso del compilador pasa por el vocabulario, la sintaxis y el análisis semántico en el front-end, y la generación y optimización del código en el back-end.
En este tutorial sobre diseño de compiladores, aprenderá
Características de los compiladores
- Exactitud
- Velocidad de compilación
- Conservar el significado correcto del código
- Velocidad del código objetivo
- Identificar construcciones de programas legales e ilegales
- Buen informe / manejo de errores
- Código de depuración de código
Tipos de compilador
Los diferentes tipos de compilador son los siguientes:
- Compiladores de un solo paso
- Compiladores de dos pasos
- Compiladores de multiplicaciones
Compilador de un solo paso
En una pasada, el código fuente del compilador se convierte directamente en código de máquina. Por ejemplo, el idioma de Pascal.
Compiladores de dos pasos
Un compilador de dos pasos se divide en dos partes, a saber.
- Interfaz: Asigna un código legal a Representación intermedia (IR).
- Parte trasera: Asigna IR a la máquina de destino
El modo de compilador de dos pasos también simplifica el proceso de recuperación. También permite múltiples interfaces.
Compiladores de multiplicaciones
El compilador de multiplicación procesa repetidamente el código fuente o un árbol de sintaxis de programa. Dividió un programa grande en docenas de programas pequeños y los procesó. Desarrolla múltiples códigos intermedios. Todos estos múltiplos toman como entrada la salida del paso anterior. Entonces necesita menos memoria. También se denomina «compilador amplio».
Tareas del compilador
Las principales tareas que realiza el compilador son:
- El programa divide una fuente en pedazos y les impone una estructura gramatical
- Le permite tomar el tablero de destino que desee de la representación intermedia y crear la tabla de símbolos
- Compila el código fuente y encuentra errores en él.
- Gestione el almacenamiento de todas las variables y el código.
- Soporte para compilación separada
- Leer, analizar todo el programa y traducir a equivalentes semánticos
- Transfiera el código fuente al código objeto según el tipo de máquina
Historial del compilador
Los siguientes son hitos importantes de la historia del compilador:
- Grace Murray Hopper utilizó por primera vez la palabra «compilador» a principios de la década de 1950.
- El primer compilador fue construido por John Backum y su grupo entre 1954 y 1957 en IBM.
- El primero fue COBOL lenguaje de programación compilado en múltiples plataformas en 1960
- Los problemas de escaneo y análisis se estudiaron en las décadas de 1960 y 1970 para proporcionar una solución completa.
Pasos para los sistemas de procesamiento del lenguaje
Antes de familiarizarse con el concepto de compiladores, primero debe comprender algunas otras herramientas que funcionan con compiladores.
- Preprocesador: El preprocesador se considera parte del compilador. Es una herramienta que produce entradas para el compilador. Se ocupa del macroprocesamiento, el aumento, la expansión del lenguaje, etc.
- Interprete: Un intérprete es como un compilador que traduce un lenguaje de alto nivel a un lenguaje de máquina de bajo nivel. La principal diferencia entre los dos es que un intérprete lee y cambia el código en línea. Un compilador lee todo el código de una vez y crea el código de máquina.
- Ensamblador: Traduce código en lenguaje ensamblador a un lenguaje comprensible para la máquina. El resultado de salida de un ensamblador se denomina archivo de objeto, que es una combinación de instrucciones de máquina y los datos necesarios para almacenar estas instrucciones en la memoria.
- Conector: El vinculador le ayuda a vincular y fusionar archivos de diferentes objetos para crear un archivo ejecutable. Es posible que todos estos archivos se hayan compilado con compiladores independientes. La tarea principal de un conector es buscar módulos conocidos en un programa y averiguar la ubicación de la memoria donde se almacena cada módulo.
- Cargador: El cargador es parte del sistema operativo, que realiza las tareas de cargar y ejecutar archivos ejecutables en la memoria. También calcula el tamaño del programa, lo que crea espacio de memoria adicional.
- Compilador cruzado: Un compilador cruzado es una plataforma de diseño de compilador que le ayuda a generar código ejecutable.
- Compilador de fuente a fuente: Compilador de fuente a fuente es un término que se utiliza al traducir el código fuente de un lenguaje de programación a otra fuente de lenguaje.
Herramientas de construcción del compilador
Las herramientas de construcción de compiladores se introdujeron como tecnologías relacionadas con la computadora que se extendieron por todo el mundo. También se les llama compiladores-compiladores, compiladores, compiladores o traductores.
Estas herramientas utilizan un lenguaje o algoritmo específico para especificar e implementar el componente del compilador. El siguiente es un ejemplo de herramientas de construcción del compilador.
- Generadores de escáner: Esta herramienta toma expresiones regulares como entrada. Por ejemplo, LEX para el sistema operativo Unix.
- Motores de traducción guiados por sintaxis: Estas herramientas de software ofrecer código intermedio mediante el uso del árbol delgado. Su objetivo es adjuntar una o más traducciones a cada nodo del árbol de pergamino.
- Generadores de analizadores: Un generador de analizadores sintácticos toma una gramática como entrada y genera automáticamente un código fuente que puede analizar secuencias de caracteres con la ayuda de la gramática.
- Generadores de códigos automáticos: Acepta código intermedio y lo convierte a lenguaje de máquina.
- Motores de flujo de datos: Esta herramienta es útil para la optimización del código. Aquí, el usuario proporciona información y se proporciona un código intermedio para analizar cualquier relación. También se denomina análisis de flujo de datos. Le ayuda a aprender cómo se transmiten los valores de una parte del programa a otra.
¿Por qué utilizar un compilador?
- El compilador verifica todo el programa, por lo que no hay errores de sintaxis o semánticos.
- El compilador optimiza el archivo ejecutable, por lo que se ejecuta más rápido
- Te permite crear una estructura interna en tu memoria.
- No es necesario que el programa se ejecute en la misma máquina en la que se creó
- Traducir todo el programa a otro idioma
- Crea archivos en disco
- Vincular los archivos en formato ejecutable
- Compruebe si hay errores de sintaxis y tipos de datos
- Te ayuda a mejorar tu comprensión de la semántica del lenguaje.
- Ayuda a manejar los problemas de rendimiento del idioma.
- Oportunidad para un proyecto registrado no trivial
- Las técnicas utilizadas para construir un compilador también pueden ser útiles para otros propósitos.
Implementación de compiladores
- El diseño del compilador ayuda a implementar completamente los lenguajes de registro de alto nivel
- Apoyar la optimización de la arquitectura informática paralela
- Nuevo diseño de jerarquía de memoria de máquina
- Ampliamente utilizado para programas de traducción
- Utilizado con otras herramientas de productividad de software
Resumen
- Un compilador es un programa informático que le ayuda a convertir el código fuente escrito en un lenguaje de alto nivel en un lenguaje de máquina de bajo nivel.
- La precisión, la velocidad de compilación y la preservación de la corrección del código son algunos aspectos importantes del diseño del compilador.
- Los compiladores se dividen en tres secciones 1) Compiladores de paso único 2) Compiladores de dos pasos y 3) Compiladores de paso múltiple
- «Compilador» fue una palabra que utilizó por primera vez Grace Murray Hopper a principios de la década de 1950.
- Los pasos para el sistema de procesamiento de idiomas son: preprocesador, intérprete, ensamblador, conector / cargador
- Las herramientas clave de construcción del compilador son 1) Generadores de escáner, 2) Sintaxis-3) Motores de traducción guiada, 4) Generadores de analizador, 5) Generadores de código automático
- La tarea principal del compilador es verificar todo el programa, por lo que no hay errores de sintaxis o semánticos.