Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Compiladores e Intérpretes - Definiciones y Conceptos
Compiladores e Intérpretes - Definiciones y Conceptos
Lenguajes de Programación
Lenguaje máquina
Lenguaje de bajo nivel
Lenguaje de alto nivel
Interpretes y Compiladores
Etapas de Análisis y de Síntesis
Precompiladores
Pseudocompiladores
Lenguaje máquina
Los lenguajes máquina son aquellos cuyas instrucciones son directamente entendibles por la
computadora sin la necesidad de traducción alguna. Sus instrucciones no son más que ristras
de ceros y unos (bits). Estas especifican la operación a realizar, los registros del procesador
y celdas de memoria implicados, etc.
Obviamente, este tipo de lenguajes serán fáciles de comprender para la computadora pero
muy difíciles para el hombre. Esta razón nos lleva a buscar otro lenguaje para comunicarnos
con la computadora.
ADD x,y,z
Esta instrucción significaría que se deben sumar los números almacenados en las direcciones
de memoria x e y, y almacenar el resultado en la dirección z. Pero aún así, a medida que los
programas crezcan en tamaño y complejidad, el ensamblador sigue sin ser una buena
solución.
Fases de un Compilador
En cada fase de un compilador se transforma el programa fuente de una representación a otra. Las
tres primeras fases forman la etapa de análisis, mientras las tres últimas forman la etapa de
síntesis.
La tabla de símbolos es una estructura de datos que almacena los identificadores utilizados en el
programa fuente así como los atributos de cada identificador. Estos atributos pueden proporcionar
información sobre el tipo del identificador, su tamaño, su rango de visibilidad, sus argumentos (en
caso de procedimientos), etc.
La tabla de símbolos tiene operaciones para encontrar un identificador rápidamente, y leer sus
atributos o modificarlos. Asimismo, permite introducir nuevos identificadores. Cada una de las fases
de compilación puede realizar modificaciones de los registros de una tabla de símbolos,
generalmente añadiendo más atributos a medida que se van conociendo.
El manejador de errores es un módulo que gestiona las acciones a realizar por cada uno de los
errores encontrados en las diferentes fases de la compilación. En general, es deseable que el
Leguajes de Programación - Página 5 de 8 - Jorge Dimarco, jdimarco@fceia.unr.edu.ar
Interpretes y Compiladores
manejador de errores permita la continuación del proceso de compilación, con objeto de permitir
encontrar más errores en el programa. Las fases de análisis sintáctico y semántico son
habitualmente las que más errores encuentran.
En otro diagrama
La entrada a este proceso es por supuesto el programa fuente. Por lo general éste es un
archivo que es creado por el usuario como un texto ASCII con o sin un formato específico
aunque también puede ser el resultado de algún otro proceso. A partir de este archivo
diversos pasos pueden ser llevados a cabo:
La siguiente figura ilustra con mayor detalle lo que pasa en cada una de las etapas del
proceso de compilación. El procesamiento de instrucciones de un lenguaje huesped (como
puede ser SQL) correría a cargo del pre-procesador, siendo transformadas instrucciones del
lenguaje anfitrión. Durante la fase de análisis léxico el scanner se encarga de identificar cada
uno de los elementos usados para escribir el programa fuente, substituyendo a cada uno de
estos por un código numérico único (tokens). En este proceso se eliminan comentarios y
espacios en blanco. Los tokens son alimentados al analizador sintáctico que valida que su
disposición está acorde a las reglas del lenguaje. Validado este el analizador semántico
procede a identificar el propósito de las diversas secuencias de tokens y buscará generar
representaciones intermedias de cada acción o directamente código máquina. Este
posteriormente es optimizado.