Es un programa
informatico que traduce
el codigo de un programa
que ha sido escrito en un
lenguaje de
programacion de alto
nivel a lenguaje maquina,
tambien conocido como
bytecode.
Fases de un Compilador
Analisis léxico
Análisis sintáctico
Análisis semántico
Generación de código intermedio
Optimización del código intermedio
Generacion del código
Optimizacion de código
En esta fase se toma todo el
codigo maquina y se trata
de mejoralo para consumir
menor cantidad de recursos
(CPU, memoria) y asi ofrecer
una velocidad mas alta.
En esta fase, se traduce el
codigo intermedio
optimizado a una secuencia
reubicable de código
máquina.
Esta fase esta encargada de
eliminar código intermedio
innecesario, asi mismo
organiza la secuancia de
declaraciones con el fin de
acerar la ejecución del
programa sin desperdiciar
recursos(CPU, memoria).
Esta fase es denominada
por algunos como la
maquina abstracta. Es un
codigo entre el lenguaje de
alto nivel y el lenguaje
maquina. Este codigo
intermedio se genera para
que la traducción al lenguaje
maquina sea mas sencilla.
En el análisis semántico
se comprueba si el árbol
de sintaxis sigue las
reglas del idioma. El
analizador semantico
produce un árbol de
sintaxxis anotado como
una salida.
En esta fase se toman los
tokens generados en el
análisis léxico como entrada y
genera un árbol analizar (o
árbol de sintaxis). En esta
fase, se genera un arreglo de
tokens con respecto a su
secuencia y se contrasta con
el codigo gramatical, es decir,
el analizador comprueba si la
expresión de los tokens es
sintacticamente correcto.
Su funcion es meramente
escánear el texto. Esta fase busca
en el codigo fuente una secuencia
de caracteres y las convierte en
un lexema resultante, de esta
manera se verifica que todos los
caracteres pertenezcan al
alfabeto del lenguaje de
programacion en el cual se este
trabajando. El análisis léxico
representa los lexemas
resultantes en forma de fichas
denominandolos "tokens".
Tipos de Compiladores
Compiladores cruzados
Generan código para un
sistema distinto del que
están funcionando.
Compiladores optimizadores
Realizan cambios en el código
para mejorar su eficiencia,
pero manteniendo la
funcionalidad del programa
original.
Compiladores de una sola pasada
Generan el código
máquina a partir de una
única lectura del código
fuente.
Compiladores de varias pasadas
Necesitan leer el
código fuente varias
veces antes de poder
producir el código
máquina.
Compiladores JIT (Just In Time)
Forman parte de un
intérprete y compilan
partes del código según
se necesitan.
Compiladores incrementales
Generan un código objeto,
instrucción por instrucción
cuando el usuario teclea
cada orden individual.
Compilador con montador
Compila distintos
módulos de forma
independiente y
después es capaz de
aplazarlos.
Auto compilador
Compilador que está
escrito en el mismo
lenguaje que va a
compilar.
Meta compilador
Es programa que recibe como
entrada las especificaciones
del lenguaje para el que se
desea obtener un compilador
y genera como salida el
compilador para ese lenguaje.
Descompilador
Es un programa que acepta
como entrada código maquina y
la traduce a un lenguaje de alto
nivel realizando el proceso
inverso a la compilación.
Datos Historicos Relevantes
El primer compilador fue
escrito por Grace Hopper
en 1952, para el lenguaje
de programacion A-0.
El equipo FORTRAN dirigido
por John W. Backus de IBM
esta generalmente
acreditado por haber
presentado el primer
compilador completo.
El compilador COBOL para el
UNIVAC II fue probablemente
el primero en ser escrito en un
lenguaje de alto nivel, llamado
FLOW-MATIC, por un equipo
dirigido por Grace Hopper.
Existe un compilador en
JAVA que evita: Errores de
memoria, imposibilidad
de acceso al SO, evita que
caiga la maquina sobre la
que corre.
Nombre: David Rolando Elias Montufar
Carne: 201700675