Está en la página 1de 5

La idea central son los compiladores.

¿Empezamos por ¿qué es un compilador?


El compilador, es un programa que puede leer un programa en un lenguaje
fuente, ¿de qué manera?, el lo que hace es que traduce un programa a un
formato que se pueda ejecutar.
Tenemos los procesadores de lenguaje los cuales tenemos el compilador y el
interprete
Compilador
En el compilador, se traduce el programa fuente, una de sus funciones
importantes es reportar errores que el programa fuente detecte durante el
proceso de su traducción
De ahí pasa a un Programa Destino el cual como sabemos es un programa
ejecutable en lenguaje máquina donde básicamente el usuario puede
ejecutarlo para procesar las entradas y producir salidas y obtener el
resultado.

Intérprete
En el intérprete, el cual en vez de traducir como lo hacemos con el programa
destino, este lo que hace es que de forma directa nos permite ejecutar las
operaciones del programa fuente con las entradas dadas por el usuario y
producir la salida. El intérprete, aunque no es más rápido que el programa
destino, da mejores resultados de error que un compilador ya que ejecuta el
programa fuente instrucciones por instrucciones.
El ejemplo que tenemos es cuando combinamos estos dos procesadores con el
lenguaje de programación java, tanto el compilador como el intérprete Un
programa fuente en Java puede compilarse primero en un formato
intermedio, llamado bytecodes. Después, una máquina virtual los interpreta.
Por otro lado, tenemos los módulos de los Sistemas de procesamiento de
lenguajes

Tenemos el preprocesador el cual puede agrandar partes de un código de uso


frecuente llamados macros, a instrucciones del lenguaje fuente.
De allí el programa fuente se alimenta de un compilador, este produce un
programa destino en ensamblador y el cargador reúne la información para su
ejecución.
Por medio de un programa fuente, pasamos al preprocesador, que los
primero que tenemos es un preprocesador el preprocesador programa una
fuente modificadora que luego se convierte a compiladores luego a
ensambladores luego a enlazador/cargador.

Por otro lado, tenemos la estructura básica de un compilador


Que se divide en dos en análisis y síntesis
La parte de análisis o también llamado (from end), se encarga de dividir el
programa fuente que como sabemos una de sus funciones importantes es
reportar errores para que el usuario pueda corregirlos, y a su vez recolectar
información que se guarda en la tabla de símbolos.
En la cual pasa a las fases de un compilador
** Tenemos el análisis léxico, sintáctico y semántico. **
En el análisis léxico o escaneo, se agrupan los lexemas por medio del flujo de
caracteres que componen el programa fuente y estos a su vez generan tokens.

En el análisis sintáctico o parser, se da por medio de un árbol sintáctico,


generando un flujo de tokens que se interrelaciona con el léxico.

En el análisis semántico, genera un código intermedio pro


medio de la información guardada ya sea por el árbol
sintáctico o la tabla de símbolos y a su vez este código
intermedio va a permitir la comprobación de operadores
correctos, el código intermedio permite la traducción de
código fuente a código destino y esta traducción se puede dar
también con código de tres direcciones que se genera por
medio de una secuencia de instrucciones.

La parte de síntesis o o también llamado (back - end), que


ya hablamos anteriormente del programa destino es
básicamente una representación intermedia de todo lo que
hemos hablado.
Tenemos dos funciones básicas de la síntesis que es la
generación de código que nos permite convertir un
programa fuente en instrucciones para interpretar.
Y la optimización del código que mejora el código
intermedio y que, por medio de un compilador optimizador,
se da una mayor optimización a los códigos.
Herramientas de construcción de compiladores
1. Generadores de analizadores sintácticos (parsers), que
producen de manera automática analizadores sintácticos a
partir de una descripción gramatical de un lenguaje de
programación.
2. Generadores de escáneres, que producen analizadores de
léxicos a partir de una descripción de los tokens de un
lenguaje utilizando expresiones regulares.
3. Motores de traducción orientados a la sintaxis, que
producen colecciones de rutinas para recorrer un árbol de
análisis sintáctico y generar código intermedio.
4. Generadores de generadores de código, que producen un
generador de código a partir
de una colección de reglas para traducir cada operación del
lenguaje intermedio en el lenguaje máquina para una
máquina destino.
5. Motores de análisis de flujos de datos, que facilitan la
recopilación de información de cómo se transmiten los
valores de una parte de un programa a cada una de las otras
partes. El análisis de los flujos de datos es una parte clave en
la optimización de código.
6. Kits (conjuntos) de herramientas para la construcción de
compiladores, que proporcionan un conjunto integrado de
rutinas para construir varias fases de un compilador.
Impactos en el compilador
Los compiladores pueden ayudar a promover el uso de
lenguajes de alto nivel, al minimizar la sobrecarga de
ejecución de los programas escritos en estos lenguajes.

También podría gustarte