Está en la página 1de 6

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