Procesadores de lenguaje
Compilador
Dicho simplemente, es una programa que lee un programa en cierto lenguaje y lo traduce a otro lenguaje. El lenguaje destino es normalmente, lenguaje maquina.
Interprete
No produce un programa destino o traduccion sino que da la impresion de ejecutar las instrucciones del programa fuente.
Algunos procesadores de Java combinan compilacion e interpretacion (hibridos), de modo que se compilan en un lenguaje intermedio y luego una maquina virtual interpreta dicho lenguaje intermedio.
En ocasiones, se requieren otros programas para crear un programa destino ejecutable.
El recolectar el programa origen es tarea del preprocesador.
Luego se manda al compilador, que produce un programa en lenguaje ensamblador como su salida.
Despu�s, un ensamblador traduce dicho programa a lenguaje de maquina.
Normalmente, los programas muy extensos se compilan en partes, por lo que despues es necesario enlazar dichas porciones. Esto lo realiza el linker.
Finalmente, el cargador reune los archivo objeto ejecutable en memoria para que sean ejecutados.
Estructura de un compilador
Analisis. Se divide al programa en componentes y les impone una estructura gramatical sobre ellos. Si en esta parte se detectan errores en la sintaxis, se deben mostrar mensajes para que sean solucionados. Tambien recolecta informacion sobre el programa fuente y la pasa junto con la representacion intermedia a la sintesis. A esta seccion del proceso se le llama front-end.
Sintesis. Construye el programa destino a partir de la informacion resultante de la etapa de analisis (tabla de simbolos y representacion intermedia). Esta parte, mas exactamente la de traduccion, es llamada back-end.
Fases del compilador
Analisis. Se divide al programa en componentes y les impone una estructura gramatical sobre ellos. Si en esta parte se detectan errores en la sintaxis, se debAnalizador lexico. Este recibe todos los caracteres que componen al programa fuente y los agrupa en secuencias significativas, o lexemas. Por cada lexema produce un token que pasa a la siguiente fase, ademas se guarda informacion de dicho token en la tabla de simbolos.

Analizador sintactico.
En esta fase se usan los tokens creados anteriormente para producir una representacion intermedia en forma de arbol que sirva para describir la estructura de la gramatica del flujo de tokens. A este arbol se le conoce como arbol sintactico.

Generador de codigo intermedio.
En el proceso de compilacion, el compilador puede construir una o varias representaciones intermedias, una de ellas es el arbol sintactico. Despues de los analisis sintactico y semantico, muchos compiladores generan una representacion intermedia similar a codigo maquina, este debe poseer dos importantes caracteristicas:

1) Debe ser facil de producir.
  2) Debe ser facil de traducir en la maquina destino.


Optimizador de codigo independiente de la maquina.
Trata de mejorar el codigo intermedio generado para que el codigo destino sea de mayor calidad. Por lo general, mejor es mas rapido, aunque pueden lograrse distintos objetivos como un codigo final mas corto.

Generador de codigo.
Este recibe una representacion intermedia del programa fuente y la asigna al lenguaje destino.en mostrar mensajes para que sean solucionados. Tambien recolecta informacion sobre el programa fuente y la pasa junto con la representacion intermedia a la sintesis. A esta seccion del proceso se le llama front-end.
Sintesis. Construye el programa destino a partir de la informacion resultante de la etapa de analisis (tabla de simbolos y representacion intermedia). Esta parte, mas exactamente la de traduccion, es llamada back-end.
Hosted by www.Geocities.ws

1