Con la llegada de
los computadores
en 1940 por Von
neumman, fue
necesario utilizar
lenguaje maquina
para los cómputos
Para lograr optimizar
el proceso de
escritura y evitar lo
tedioso se recurrio a
lenguaje Ensamblador
El lenguaje ensamblador
mejoro notablemente la
rapidez de los procesos, sin
embargo dependia solo de
la maquina para la cual fue
escrito
Fue el equipo de IBM
quien demostró que era
posible crear un sistema
independiente de
cualquier maquina con la
creación de FORTRAN y
su compilador
Noam Chomsky gracias a sus estudios
logro clasificar los lenguajes según la
complejidad de su gramática gracias a
ellos la construcción de compiladores
se volvió mas fácil
Clasifico 3 gramaticas: Tipo 1, 2 y 3
Proceso de traducción
Analizador Lexico
En esta fase se lee el
programa de izquierda a
derecha y se agrupan en
componentes léxicos (Tokens)
Analizador sintáctico
Los caracteres se agrupan
en frases gramaticas de
manera jerárquica para
sintetizar la salida del
compilador, se comprueba
si lo obtenido en la fase
anterior es sintácticamente
correcto
Analisis semantico
Revisa el programa fuente para
encontrar errores semánticos
Optimizador de
código fuente
Consiste en mejorar el código
intermedio para que resulte un
código de maquina mas rápido
de ejecutar
Generador de codigo
Toma como entrada el código
intermedio y de salida genera el
código para la maquina
Optimizador de código
En esta fase el compilador
intenta mejorar el código
objetivo para incrementar el
rendimiento (reemplaza
instrucciones y elimina las
operaciones secundarias
También se le conoce como
componentes léxicos es una cadena de
caracteres que tiene significado
coherente en cierto lenguaje de
programación
Arbol Sintactico
No es mas que una forma de visualizar
la estructura de una oración donde
cada nodo es un registro de la
información recolectada por los
analizadores
Tabla de simbolos
Estructura de datos que usa el proceso
de traducción de un lenguaje de
programación por un compilador o
interprete, actualmente en casi todas las
fases del compilador
Tabla de literales
Estructura de datos que almacena
constantes y cadenas utilizadas en el
programa
Codigo intermedio
Ese código puede conservarse en un
arreglo de cadenas de texto, un archivo
temporal o bien en una estructura ligada
Archivos temporales
Como al principio las computadores no
tenían suficiente memoria para guardar un
programa completo se recurrio a archivos
temporales