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