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