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